我想要的:
tableView
中包含一个textField
和一个textLabel
。当 tableView 存在时,textField
将成为 firstResponder
并显示键盘。
我遇到的问题:
如果在 viewWillAppear
或 viewDidLoad
中调用 textField.becomeFirstResponder()
(textField
和 textLabel
根本不显示)。
我是如何修复它的:
当我将 textField.becomeFirstResponder()
调用移动到 viewDidAppear
时,该错误无法重现
问题:
我是否需要在 viewDidAppear
函数中调用 becomeFirstResponder()
函数?否则键盘会挡住所有其他 View
非常感谢
最佳答案
想想 viewDidLoad
、viewWillAppear
和 viewDidAppear
是什么意思。
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/