我想要一个变量,告诉我哪个文本域刚刚被编辑。因此,变量需要具有UITextField类型。但我如何初始化它呢?
var whichTextFieldWasEditited = UITextField
init() { }
最佳答案
所有UITextFields都有您可以遵循的协议。
https://developer.apple.com/documentation/uikit/uitextfielddelegate
协议有6种不同的方法,你要找的是textfielddidediting
区分UITextFields的最简单方法是为它们分配标记。所有的UIViews(和子类)都有一个标签,这样就可以识别它们。
为了能够使用这个协议方法,您需要将UITextField的委托设置为“self”,在您的情况下,它将是视图控制器,并为UITextField s设置标记
把它们绑在一起
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,你需要为自己分配文本字段的委托,你需要设置它们的标记,然后你可以在协议方法中区分它们。
关于swift - 如何初始化UITextField变量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55065100/