iOS UITextField addTarget 和 textFieldDidEndEditing 的区别

iOS UITextField difference between addTarget and textFieldDidEndEditing

使用 .editingDidEnd 选项添加目标和 textFieldDidEndEditing 方法有什么区别?

@IBOutlet weak var textField: UITextField! {
    didSet {
        // check when textField editing ends
        textField.addTarget(self,
                            action: #selector(titleDidChange(_:)),
                            for: .editingDidEnd)
    }
}

VS.

func textFieldDidEndEditing(_ textField: UITextField) {
    // user has resigned responder
}

最后的结果是一样的。当文本字段不再是第一响应者时,两者都会被调用。

但是使用addTarget允许多个目标被通知事件,而使用delegate方法只允许单个目标被通知事件。

如果你只有一个target,而且你还实现了其他委托方法,那就直接使用委托方法。

如果您需要多个目标来了解事件,那么您需要使用addTarget