我正在使用多个 UITextField
,并且想随时对其中任何一个进行任何更改。
它看起来基本上是这样的:
@IBOutlet weak var f1: UITextField!
@IBOutlet weak var f2: UITextField!
@IBOutlet weak var f3: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
f1.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
f2.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
f3.addTarget(self, action: #selector(textFieldDidChange), for: .editingChanged)
}
@objc func textFieldDidChange(_ textField: UITextField) {
// Data in one of the fields changed.
if self.view.tag == 1 {
print("field 1")
} else {
if self.view.tag == 2 {
print("field 2")
}
//...
}
}
如您所见,我试过设置标签,但不确定如何在此处访问它们。
我正在使用 XCode 9.01 和 Swift 4。
最佳答案
你不需要标签,因为你有 socket 。只需将 textField
参数与您的每个导出进行比较:
@objc func textFieldDidChange(_ textField: UITextField) {
if textField == f1 {
print("field 1")
} else if textField == f2 {
print("field 2")
} else if textField == f3 {
print("field 3")
}
}
关于ios - 如何识别哪个 UITextField 被 textFieldDidChange 更改了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46980008/