我有一个视图控制器监听UIKeyboardWillShowNotification和UIKeyboardWillHideNotification.这些通知的处理程序调整视图的各个部分,这是标准过程.
以下代码用于从屏幕坐标转换键盘rect:
CGRect keyboardBounds = [self.view convertRect:[keyboardBoundsValue CGRectValue] fromView:nil];
Run Code Online (Sandbox Code Playgroud)
再次,标准程序.不幸的是,存在这种转换失败的严重情况.看看在部署键盘时iPhone从纵向旋转到横向时会发生什么:
1)iOS自动触发UIKeyboardWillHideNotification ; self.interfaceOrientation报告为肖像 ; keyboardBounds.height是216.0.这是有道理的.为什么?因为在视图切换到横向模式之前,通知处理程序有机会"清理".
2)iOS自动触发UIKeyboardWillShowNotification ; self.interfaceOrientation报告为肖像 ; keyboardBounds.height是480.0.这没有意义.为什么不?因为通知处理程序将完成它的工作,认为键盘的高度是480.0!
苹果公司是否放弃了这个,或者我做错了什么?
请注意,倾听UIKeyboard而不是 ShowNoification不是有效的解决方案,因为它会显着降低用户体验.为什么?因为在键盘部署动画发生后动画我对视图的更改是...好吧,非常可怕.
键盘部署后,有没有人设法让自动旋转完美运行?Apple似乎完全忽略了混乱的爆发.>:|