我想要一个变量,告诉我哪个文本域刚刚被编辑。因此,变量需要具有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/

10-12 00:34
查看更多