拥有传统的UISplitViewController iPad应用程序,它使用presentViewController从“右侧”VC窗格显示模态视图:animated:completion:将modalPresentationStyle设置为UIModalPresentationFormSheet.在viewDidAppear中的模态视图的VC中,我们在UITextField上调用becomeFirstResponder.在iOS6中,这导致了一个居中的模态视图,从底部向上滑动,然后聚焦KB.然而,自iOS7以来,在视图从底部向上滑动之后,它会向右滑动(估计)200点.奇怪的是,如果您解除键盘,只要您做到这一点,视图就会像iOS6一样滑回到它的居中位置.从那时起,当模态视图出现时,KB焦点会导致它保持居中,并且只能向上滑动一点,这是非全屏幕模态视图的正常iOS行为.这就像是一旦你把KB自己从之后解雇了,我试过发现:
>如果为thisViewController调用设置动画为NO,它的工作原理就像iOS6.
>如果你根本不叫isFirstResponder,它的作用就像iOS6.
>如果您调用performSelector:xxxxafterDelay:0,将getsFirstResponder作为选择器,而不是直接调用becomeFirstResponder,它也可以像iOS6一样工作.
从上面的选项3是我的前进的解决方法,但我的问题是:这是一个iOS7的错误,还是我们做错了的事情,显然是在6,但不是在iOS7?
只发生在iOS7之后.只有在模拟器上重新创建了一次,而100%的测试设备上的时间(iPad mini).从搜索中我已经完成了我目前最好的猜测(假设我们的代码不是责怪iOS7),键盘的动画和从iOS界面底部滑出的视图之间是一个种族条件类型的错误这导致视图向右移动而不是向上移动,就像通常情况下,当非全屏幕视图以模态显示和KB弹出时.阅读this similar SO question后我得到了这个理论.