我想要一个变量,告诉我刚刚编辑了哪个文本字段。因此,变量需要具有Type UITextField。但是我怎么初始化呢?
var whichTextFieldWasEditited = UITextField
init() { }
答案 0 :(得分:2)
所有UITextFields都具有您可以遵循的协议。 https://developer.apple.com/documentation/uikit/uitextfielddelegate
该协议有6种不同的方法,您正在寻找的方法是textFieldDidEndEditing
区分UITextField的最简单方法是为其分配标签。所有的UIView(和子类)都有一个标记,以便可以识别它们。
要使用此协议方法对您有利,您需要将UITextField的委托设置为“ self”(在您的情况下将作为视图控制器),并设置UITextField的标签
将它们绑在一起
class MyViewController: UIViewController, UITextFieldDelegate {
let textField1 = UITextField() //() is the constructor for the object
let textField2 = UITextField()
init(){ //some generic init
super.init()
textField1.delegate = self
textField1.tag = 1
textField2.delegate = self
textField2.tag = 2
}
//protocol method
func textFieldDidEndEditing(_ sender: UITextField){
//since the sender is of UITextField
if sender.tag == 1 { //it's textField1
//do something
}
if sender.tag == 2 { //it's textField2
//do something
}
}
}
注意:这只是一个骨架示例,重要的一点是您的类需要符合UITextFieldDelegate,需要为自己分配文本字段的委托,需要设置其标记,然后才能区分它们在协议方法中。