在iOS 6中,我习惯在viewDidLoad
中显示键盘。
- (void)viewDidLoad
{
[super viewDidLoad];
[txtField becomeFirstResponder];
}
这样,当navigationController推送新的viewController时,键盘已经存在,从左到右平滑动画,避免自下而上的动画。
在iOS 7中,这种行为似乎已经破裂。
如果我在[txtField becomeFirstResponder]
中添加viewDidLoad
,键盘就会出现在推动动画的过程中,已经处于最终位置:令人不快的效果!!
我试图在[txtField becomeFirstResponder]
中移动viewWillAppear
,但最终结果不变。
你知道一种方法来恢复iOS 6的行为,将新的viewController和键盘全部推到一起吗?
编辑:使用计时器也不起作用...无论我设置什么时间延迟,键盘只会在推动动画结束时显示。
到目前为止,我最好尝试将[txtField becomeFirstResponder]
放入viewWillLayoutSubviews
或viewDidLayoutSubviews
。不幸的是,在推送viewController时这样做是有效的,但在弹出时却没有(键盘没有出现)。
答案 0 :(得分:12)
我已设法在viewWillLayoutSubviews
中推断您的解决方法,以强制它发挥作用。
- (void)viewWillLayoutSubviews {
if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) {
[self.textField1 becomeFirstResponder];
}
}
这对我来说都是有用的,无论是推入堆栈还是解雇模态视图控制器。