iphone - 在正确的时间显示键盘 iOS7

标签 iphone ios objective-c keyboard ios7

在 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 时有效,但在弹回时无效(键盘没有出现)。

最佳答案

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

- (void)viewWillLayoutSubviews {

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

这对我来说既适用于推送到堆栈,也适用于关闭模态视图 Controller 。

关于iphone - 在正确的时间显示键盘 iOS7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19023798/

相关文章:

ios - MWPhotoBrowser 如何添加旋转照片功能?

javascript - 如何在 javascript 中查找移动 safari/iphone 中的当前 "scroll"偏移量

iphone - 执行FetchRequest :error: returns autoreleased array or with retain count = 1

iphone - iOS - 解析不同格式的日期

ios - 固定颜色未按预期正常显示

iphone - 将 scrollView 添加到 .xib 文件中的 View

objective-c - 将沙盒应用程序添加到登录项

iphone - UITableView 分组背景图

ios - UITableViewController - 比屏幕宽的 TableView

ios - xcassets 中的所有图像,然后如何加载从我的包中的 Nib 引用的图像