在 iOS 6 中,我习惯于在 viewDidLoad
中呈现键盘。
- (void)viewDidLoad
{
[super viewDidLoad];
[txtField becomeFirstResponder];
}
这样,当 navigationController 推送新的 viewController 时,键盘已经在那里,从左到右平滑地动画,避免自下而上的动画。
在 iOS 7 中,这种行为似乎被破坏了。
如果我在 viewDidLoad
中添加 [txtField becomeFirstResponder]
,键盘出现在推送动画的中间,已经在它的最终位置:一个不愉快的效果!!
我试过在viewWillAppear
中移动[txtField becomeFirstResponder]
,但最终结果没有改变。
您是否知道恢复 iOS 6 行为的方法,将新的 viewController 和键盘一起推送?
编辑:使用计时器也不起作用...无论我设置什么时间延迟,键盘仅在推送动画结束时显示。
到目前为止,我最好的尝试是将 [txtField becomeFirstResponder]
放在 viewWillLayoutSubviews
或 viewDidLayoutSubviews
中。不幸的是,这样做在推送 viewController 时有效,但在弹回时无效(键盘没有出现)。
最佳答案
我已经设法在 viewWillLayoutSubviews
中推断出您的解决方法以强制其工作。
- (void)viewWillLayoutSubviews {
if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) {
[self.textField1 becomeFirstResponder];
}
}
这对我来说既适用于推送到堆栈,也适用于关闭模态视图 Controller 。
关于iphone - 在正确的时间显示键盘 iOS7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023798/