【发布时间】:2018-05-17 09:00:44
【问题描述】:
键盘有时会向上移动一点,如图here
首先,这个问题只发生在 iOS11 上,而不是在早期的 iOS 版本上。 其次,这个问题发生在应用程序中的每个 UITextField 实例中,不仅在特定视图控制器的一个特定文本字段中。
通过观察UIKeyboardWillShowNotification,发现UIKeyboardFrameEndUserInfoKey中存储的键盘边框不正确,准确的说是高度错误。
- (void)keyboardWillShow:(NSNotification *)notification {
NSDictionary *info = [notification userInfo];
NSString *curveValue = [info objectForKey:UIKeyboardAnimationCurveUserInfoKey];
CGRect rect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
NSLog(@"keyboard frame: %@", NSStringFromCGRect(rect));
}
我们在 iPhone7 (11.1) 上运行时得到这样的日志:
keyboard frame {{0, 451}, {375, 216}}
keyboard frame {{0, 292}, {375, 375}}
keyboard frame {{0, 451}, {375, 216}}
keyboard frame {{0, 292}, {375, 375}}
keyboard frame {{0, 292}, {375, 375}}
216 应该是正确的高度,而 375 是错误的。奇怪的是,键盘的高度恰好等于屏幕的宽度。
根据我得到的事实,我认为这是一个 IOS 11 键盘问题,因为它只发生在 iOS 11 上,并且键盘的高度肯定是由 iOS 控制的,但是由于某种原因它返回了错误的高度。
然而,棘手的是,我从我们的应用程序中提取了一个包含文本字段的特定视图控制器并创建了一个单独的演示项目,然后一切正常。而且我没有发现谷歌搜索发生在其他人身上的类似问题。所以我怀疑这可能是因为我们的应用程序中的某些设置导致了这个 iOS11 键盘高度问题。
你们以前有没有遇到过这种奇怪的问题?或者有什么你们能想到的可能是罪魁祸首吗?我已经用完了我的想法。谢谢!
【问题讨论】:
-
不正确的高度不会通过帧转换而改变。该线程与此处的问题无关。 @rmaddy
标签: ios iphone height ios11 keyboard-events