首页 文章

在iOS7正确的时间显示键盘

提问于
浏览
10

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

- (void)viewDidLoad
{
    [super viewDidLoad];

    [txtField becomeFirstResponder];
}

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

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

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

我试图在 viewWillAppear 中移动 [txtField becomeFirstResponder] ,但最终结果没有改变 .

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

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

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

1 回答

  • 12

    我已设法在 viewWillLayoutSubviews 中推断您的解决方法以强制它起作用 .

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

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

相关问题