objective-c – iOS 8方向更改:键盘框架无法正确显示
发布时间:2020-12-14 18:00:51 所属栏目:百科 来源:网络整理
导读:这只是一个iOS 8问题,键盘在iOS 7中正确显示设备方向更改.我的应用程序支持纵向和横向,并使用自动布局. 如果我将包含UITextField子类的UIViewController子类推送到导航堆栈并且UITextField成为纵向的第一个响应者,则默认键盘会正确显示.但是,如果我将设备旋
这只是一个iOS 8问题,键盘在iOS 7中正确显示设备方向更改.我的应用程序支持纵向和横向,并使用自动布局.
如果我将包含UITextField子类的UIViewController子类推送到导航堆栈并且UITextField成为纵向的第一个响应者,则默认键盘会正确显示.但是,如果我将设备旋转到横向,则UIViewController子视图布局会正确显示,但键盘会显示在屏幕的顶部中央.键盘的方向对于横向方向是正确的,但它的框架宽度与纵向方向的预期宽度相同.如果我将应用方向设置为仅横向,则键盘无法正确显示.这只是iOS 8方向更改的问题. 解决方法
在iOS 8之前,当向应用程序报告时,键盘的位置和宽度/高度始终相对于纵向方向. (例如,Landscape的键盘宽度在y方向,在iPad上为~352像素.)
从iOS 8开始,它已更新为在(物理)视图的左上角始终具有(0,0),宽度/高度反映了您通常在iOS之外预期的x / y方向.如果您之前通过keyboardDidShow的[通知userInfo]等方式定位键盘,那么您将获得不太合理的数字.您可以使用这些内容来考虑iOS8之前的特性: - (void)keyboardDidShow: (NSNotification *) notification{ NSDictionary *keyboardInfo = [notification userInfo]; CGSize keyboardSize = [[keyboardInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; float height,width; if(UIInterfaceOrientationIsPortrait(orientation)){ width = keyboardSize.width; height = keyboardSize.height; } else { if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1){ width = keyboardSize.height; height = keyboardSize.width; } else { width = keyboardSize.width; height = keyboardSize.height; } } // Remainder of function } 哪个可以重构为…… - (void)keyboardDidShow: (NSNotification *) notification{ NSDictionary *keyboardInfo = [notification userInfo]; CGSize keyboardSize = [[keyboardInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; float width = keyboardSize.width; float height = keyboardSize.height; if(!UIInterfaceOrientationIsPortrait(orientation) && (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1)){ width = keyboardSize.height; height = keyboardSize.width; } // Remainder of function } 此外,8.1更新修复了可能与上述更改相关的几个横向/旋转错误.抓住更新,看看是否能解决您的问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |