在iOS7正确的时间显示键盘

Bep*_*ppe 10 iphone keyboard objective-c ios ios7

在iOS 6中,我习惯用键盘输入viewDidLoad.

- (void)viewDidLoad
{
    [super viewDidLoad];

    [txtField becomeFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

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

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

如果我加[txtField becomeFirstResponder]viewDidLoad,键盘会出现在其最终位置推动画,已经中部:不愉快的效果!

我试着移动[txtField becomeFirstResponder]viewWillAppear,但最终的结果是不变的.

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

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

到目前为止,我最好的尝试是把[txtField becomeFirstResponder]viewWillLayoutSubviewsviewDidLayoutSubviews.不幸的是,这样做是在推送viewController时工作但不是在弹出时(键盘没有出现).

Ell*_*eal 12

我设法推断你的解决方法,viewWillLayoutSubviews以迫使它工作.

- (void)viewWillLayoutSubviews {

    if (![self.textField1 isFirstResponder] && ![self.textField2 isFirstResponder] && ...) {
        [self.textField1 becomeFirstResponder];
    }
}
Run Code Online (Sandbox Code Playgroud)

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

  • 太棒了!这正是我需要的...... ViewWillAppear太早了,ViewDidAppear为时已晚. (3认同)