self.textField.delegate = self 如何快速工作?

Jos*_*osh 5 ios swift swift2

我正在 iPhone 应用程序开发中使用键盘退出功能。我想知道为什么

self.textField.delegate = self 
Run Code Online (Sandbox Code Playgroud)

需要包含在 viewController 的 viewDidLoad 中。我试图找到原因,但到目前为止还没有明确的解释。

EI *_*2.0 5

UITextFieldDelegate 协议定义了用于管理 UITextField 对象中文本的编辑和验证的方法。本协议的所有方法都是可选的。

文本字段调用其委托的方法以响应重要更改。您可以使用这些方法来验证用户键入的文本、响应与键盘的特定交互以及控制整个编辑过程。在文本字段成为第一响应者并显示键盘(或其分配的输入视图)之前不久开始编辑。

更多信息。检查苹果文档。

self.textField.delegate = self如果您不想管理 UITextField 对象中文本的编辑和验证,则没有必要使用它,因为 的所有方法UITextFieldDelegate都是可选的。

对于您的其他问题,例如 .delegate = self 是做什么的??

当您“设置委托”时,您所做的就是说明您希望消息的去向。

因此,

blah.delegate =amazingPlace 会将消息发送到“amazingPlace”。

blah.delegate = somethingElse 会将消息发送到“somewhereElse”。

blah.delegate = self 会将消息发送给您。

...查看此源链接以获取详细信息


mcf*_*edr 5

几点

  1. 您需要设置委托的原因是因为没有它,视图不知道视图控制器。所以它不会知道你的方法textFieldDidEndEditing,它永远不会被调用。

  2. 这是委托的基本前提,你告诉那个对象,“这是一个我希望你调用方法的对象”

  3. 它不具有在被设置viewDidLoad-但它往往是最无限便捷地方设立代表的意见。

  4. 委托不一定是视图控制器(self),在您的情况下,这是最简单的方法,但是有一个UITableView共同点是让另一个类成为委托,这样所有的逻辑都不在一个地方,所以它可以是改变了。