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

Where to call becomeFirstResponder(), at ViewDidAppear or ViewWillAppear?

我想要什么

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

我遇到的问题:

如果在 viewWillAppearviewDidLoad 中调用 textField.becomeFirstResponder(),应用程序仅显示键盘(textFieldtextLabel 根本不显示).

我是如何修复的:

当我将 textField.becomeFirstResponder() 调用移至 viewDidAppear

时,错误无法重现

问题:

我可以在 viewDidAppear 函数中调用 becomeFirstResponder() 函数吗?否则键盘会挡住所有其他视图

非常感谢

想想 viewDidLoadviewWillAppearviewDidAppear 的意思

  • viewDidLoad 表示视图控制器 有一个视图 — 但该视图还不是界面的一部分。

  • viewWillAppear 意味着视图控制器的视图将成为界面的一部分——但还没有。

  • viewDidAppear表示视图控制器的视图did成为界面的一部分。

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