ios - UIKeyboard采用了无效的帧

  显示原文与译文双语对照的内容

我现在有一个 UICollectionView,屏幕底部有一个 UITextField 。 当键盘出现时,文件夹会根据键盘( 非常像inputAccessoryView但是我没有用它来做其他的原因)的框架进行移动。

无论如何,屏幕上有一个按钮,在压缩时显示一个模态 UIViewController,如果我的文字是 isFirstResponder

现在,当这个模式视图完成它的业务时,我们回到集合视图和文本文件。

我检查了我收到的通知 UIKeyboardWillChangeFrameNotification 而这就是信息输入:


Printing description of notification:
NSConcreteNotification 0x1ee4e900 {name = UIKeyboardWillChangeFrameNotification; userInfo =
{
 UIKeyboardAnimationCurveUserInfoKey = 0;
 UIKeyboardAnimationDurationUserInfoKey ="0.4";
 UIKeyboardBoundsUserInfoKey ="NSRect: {{0, 0}, {320, 0}}";
 UIKeyboardCenterBeginUserInfoKey ="NSPoint: {160, 1136}";
 UIKeyboardCenterEndUserInfoKey ="NSPoint: {160, 568}";
 UIKeyboardFrameBeginUserInfoKey ="NSRect: {{inf, inf}, {0, 0}}";
 UIKeyboardFrameChangedByUserInteraction = 0;
 UIKeyboardFrameEndUserInfoKey ="NSRect: {{inf, inf}, {0, 0}}";
}}

键盘就像 {{inf, inf}, {0, 0}} 我已经编写了一个检查( 使用 isInf ),但现在键盘将永久失效,它将不会在应用程序中显示。 这是在iOS6和ios上,在模拟器和设备上。

我将查看所有的代码,看看是否有什么引起问题的问题,但是我希望有一些类似的。

时间:

3月后我终于找到了( 我一直在做其他的事) 。

简短的答案

确保你没有从任何旋转方法返回垃圾,否则键盘会自动关闭。

长版本

通过使用应用程序发现,它在应用程序中绘制了 3d 个分解。 在屏幕上,我注意到了键盘,但它的是画面,当界面是纵向的时候。 这立即让我修改了旋转的整个方式。

整个问题从一个具有复杂结构的子视图控制器跨越,并且旋转调用被手动转发给子级。 例如这里方法:


- (NSUInteger)supportedInterfaceOrientations
{
 return [[[(id)self.selectedViewController viewControllers] lastObject] supportedInterfaceOrientations];
}

依赖当前选定导航控制器上的任何顶层视图控制器返回值。 好的,一个视图控制器是恶意的,它没有返回任何东西,所以返回值必须是内存或者零中的任何东西。

解决方案现在检查视图控制器是否响应该方法,如果不是,则默认为纵向( 它大约是应用的90% ) 。


- (NSUInteger)supportedInterfaceOrientations
{
 NSUInteger supported = UIInterfaceOrientationMaskPortrait;
 UIViewController *viewController = [[(id)self.selectedViewController viewControllers] lastObject];

 if (viewController && [viewController respondsToSelector:@selector(supportedInterfaceOrientations)])
 supported = [viewController supportedInterfaceOrientations];

 return supported;
}

好的,正确的方法就是将 YES-(BOOL)shouldAutomaticallyForwardRotationMethods ( iOS 6,7 ) 但这是不可以能的,因为它是如何实现的。 现在,它在 NO 上,并且被手工处理。

仍然有一个问题,它为什么只对显示的视图控制器重要。 不过我宁愿把它当作"返回无效接口方向的随机行为"。

...