在重新编码或通话期间,我在 iOS(真实)设备上遇到键盘扩展问题(iOS 模拟器没有红色状态栏)。由于状态栏增加了 20 点,自定义键盘也在 Y 轴上移动了 20 点,并将其 高度
降低到 196 点(应该是 216 点)。但是,当我打印 view.frame
时,它显示 {{0.0, 0.0}, {320.0, 196.0}}。
如果我使用 Storyboard而不是以编程方式添加 View ,则效果很好。一开始我以为是topLayoutGuide.length
的原因,结果调试区显示0.0。
我试图找到解决方案或与此问题相关的任何主题,但似乎只有我一个人面对它。 :(
最佳答案
对我有用的解决方法:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
if (CGRectGetMinY(self.view.superview.frame) > 0.f) {
CGRect frame = self.view.superview.frame;
frame.origin.y = 0.f;
[self.view.superview setFrame:frame];
}
}
基本上,我们正在寻找 superview 的框架,如果它移动了,我会“调整”它。
编辑:
作为TomSawyer提到,以前的解决方案存在问题。这个应该可以同时解决这两个问题。
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
CGRect frame = self.view.superview.frame;
CGFloat dy = CGRectGetMinY(frame);
if (dy > 0.f) {
frame.origin.y = 0.f;
frame.size.height += dy;
[self.view.superview setFrame:frame];
}
}
关于如果在录音或通话期间状态栏增加,iOS 自定义键盘的框架会缩小 20 点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028589/