在iOS7正确的时间显示键盘

时间:2013-09-26 09:03:50

标签: iphone ios objective-c keyboard ios7

在iOS 6中,我习惯在viewDidLoad中显示键盘。

- (void)viewDidLoad
{
    [super viewDidLoad];

    [txtField becomeFirstResponder];
}

这样,当navigationController推送新的viewController时,键盘已经存在,从左到右平滑动画,避免自下而上的动画。

在iOS 7中,这种行为似乎已经破裂。

如果我在[txtField becomeFirstResponder]中添加viewDidLoad,键盘就会出现在推动动画的过程中,已经处于最终位置:令人不快的效果!!

我试图在[txtField becomeFirstResponder]中移动viewWillAppear,但最终结果不变。

你知道一种方法来恢复iOS 6的行为,将新的viewController和键盘全部推到一起吗?

编辑:使用计时器也不起作用...无论我设置什么时间延迟,键盘只会在推动动画结束时显示。

到目前为止,我最好尝试将[txtField becomeFirstResponder]放入viewWillLayoutSubviewsviewDidLayoutSubviews。不幸的是,在推送viewController时这样做是有效的,但在弹出时却没有(键盘没有出现)。

1 个答案:

答案 0 :(得分:12)

我已设法在viewWillLayoutSubviews中推断您的解决方法,以强制它发挥作用。

- (void)viewWillLayoutSubviews {

    if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) {
        [self.textField1 becomeFirstResponder];
    }
}

这对我来说都是有用的,无论是推入堆栈还是解雇模态视图控制器。