我正在 iPhone 应用程序开发中使用键盘退出功能。我想知道为什么
self.textField.delegate = self
Run Code Online (Sandbox Code Playgroud)
需要包含在 viewController 的 viewDidLoad 中。我试图找到原因,但到目前为止还没有明确的解释。
UITextFieldDelegate 协议定义了用于管理 UITextField 对象中文本的编辑和验证的方法。本协议的所有方法都是可选的。
文本字段调用其委托的方法以响应重要更改。您可以使用这些方法来验证用户键入的文本、响应与键盘的特定交互以及控制整个编辑过程。在文本字段成为第一响应者并显示键盘(或其分配的输入视图)之前不久开始编辑。
self.textField.delegate = self如果您不想管理 UITextField 对象中文本的编辑和验证,则没有必要使用它,因为 的所有方法UITextFieldDelegate都是可选的。
对于您的其他问题,例如 .delegate = self 是做什么的??
当您“设置委托”时,您所做的就是说明您希望消息的去向。
因此,
blah.delegate =amazingPlace 会将消息发送到“amazingPlace”。
blah.delegate = somethingElse 会将消息发送到“somewhereElse”。
blah.delegate = self 会将消息发送给您。
...查看此源链接以获取详细信息
几点
您需要设置委托的原因是因为没有它,视图不知道视图控制器。所以它不会知道你的方法textFieldDidEndEditing,它永远不会被调用。
这是委托的基本前提,你告诉那个对象,“这是一个我希望你调用方法的对象”
它不具有在被设置viewDidLoad-但它往往是最无限便捷地方设立代表的意见。
委托不一定是视图控制器(self),在您的情况下,这是最简单的方法,但是有一个UITableView共同点是让另一个类成为委托,这样所有的逻辑都不在一个地方,所以它可以是改变了。