swift - 在哪里调用 becomeFirstResponder(),在 ViewDidAppear 或 ViewWillAppear?

标签 swift uiviewcontroller first-responder

我想要的:

tableView 中包含一个textField 和一个textLabel。当 tableView 存在时,textField 将成为 firstResponder 并显示键盘。

我遇到的问题:

如果在 viewWillAppearviewDidLoad 中调用 textField.becomeFirstResponder()(textFieldtextLabel 根本不显示)。

我是如何修复它的:

当我将 textField.becomeFirstResponder() 调用移动到 viewDidAppear 时,该错误无法重现

问题:

我是否需要在 viewDidAppear 函数中调用 becomeFirstResponder() 函数?否则键盘会挡住所有其他 View

非常感谢

最佳答案

想想 viewDidLoadviewWillAppearviewDidAppear 是什么意思

  • viewDidLoad 表示 View Controller 一个 View — 但该 View 还不是界面的一部分。

  • viewWillAppear 意味着 View Controller 的 View 将成为界面的一部分 — 但还没有。

  • viewDidAppear 表示 View Controller 的 View 确实成为界面的一部分。

在您的文本字段调用键盘之前,您需要让您的 View 成为界面的一部分。只有这样 TableView 才会真正显示和配置。换句话说,此时界面已经确定为它的实际形式,我们已准备好将键盘正确地放在它上面。

关于swift - 在哪里调用 becomeFirstResponder(),在 ViewDidAppear 或 ViewWillAppear?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45286377/

相关文章:

ios - 如何快速将 UIViewController 添加到 UIScrollView 中?

swift - 在菜单栏子菜单中列出所有已安装的卷(仅以编程方式)

ios - 一劳永逸地解决 initWithFrame :self. view.frame 20 像素(状态栏)问题

objective-c - 如果事件不处理,则将事件发送到另一个 NSControl 下的 NSControl

ios - 始终是第一响应者的 UITextField

ios - 如何从任意数组中的枚举获取原始值

swift - Firebase 数据库 - fatal error : Unexpectedly found nil while unwrapping an Optional value

ipad - 当键盘出现在带有 iOS8 的 iPad 上时,将模态呈现的 UIViewController 向上移动

ios - 如何将(可选的)完成处理程序关闭传递给 Swift 中的 transitionFromViewController?

iphone - iOS 单元测试 : How to set/update/examine firstResponder?