【问题标题】:Showing keyboard at the right time iOS7在正确的时间显示键盘iOS7
【发布时间】:2013-10-02 03:49:38
【问题描述】:

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

- (void)viewDidLoad
{
    [super viewDidLoad];

    [txtField becomeFirstResponder];
}

这样,当navigationController推送新的viewController时,键盘已经存在,动画从左到右流畅,避免了自底向上的动画。

在 iOS 7 中,这种行为似乎被破坏了。

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

我尝试将[txtField becomeFirstResponder]移动到viewWillAppear,但最终结果没有改变。

您知道一种方法可以恢复 iOS 6 的行为,同时将新的 viewController 和键盘推送到一起吗?

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

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

【问题讨论】:

  • 在 ios 7 中使用计时器延迟 0.5 秒。
  • 感谢您的建议,不幸的是它对我不起作用。请看一下我的编辑。

标签: iphone ios objective-c keyboard ios7


【解决方案1】:

我已经设法推断出您在 viewWillLayoutSubviews 中的解决方法以强制它工作。

- (void)viewWillLayoutSubviews {

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

这对我来说既适用于推入堆栈,也适用于关闭模态视图控制器后。

【讨论】:

  • 太棒了!..这正是我所需要的.. ViewWillAppear 太快了,而 ViewDidAppear 太晚了。
猜你喜欢
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
  • 2017-08-20
  • 2016-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多