在 Swift 3 中,我需要检测用户是否触摸了 UITextField 之外,然后检查特定的 UITextField 是否是发送者,然后保存文本。我一直在尝试使用通知中心来做到这一点,我在 Swift 2 中找到了示例,但我正在努力为 Swift 3 实现正确的语法。
let notificationName = Notification.Name("UITextFieldTextDidChange")
NotificationCenter.default.addObserver(self, selector: #selector(self.textFieldDidChange), name: notificationName, object: nil)
NotificationCenter.default.post(name: notificationName, object: nil)
func textFieldDidChange(sender: AnyObject) {
if let notification = sender as? NSNotification,
let textFieldChanged = notification.object as? UITextField
where textFieldChanged == self.myTextField {
storedText = myTextField.text!
}
}
更新
我发现了一种对我有用的稍微不同的方法:
myTextField.addTarget(self, action: #selector(didChangeText(textField:)), for: .editingChanged)
func didChangeText(textField: UITextField) {
if let textInField = myTextField.text {
myTextField.text = textInField
storedText = myTextField.text!
}
}