您好,我收到两个有关 textFieldDidChange ( Swift) 的错误

Hello, I am getting two errors for textFieldDidChange ( Swift)

有人可以帮帮我吗?我收到这两个错误

use of unresolved identifier

use of local variable textFieldDidChange before its declaration

这是我的代码

override func viewDidLoad() {
    super.viewDidLoad()

    // Setting text field delegates
    emailTextField.delegate = self
    passwordTextField.delegate = self

    // Disable login button until both textFields are not nil
    textField.addTarget(self, action: #selector(textFieldDidChange), for: UIControlEvents.editingChanged)
}

func textFieldDidChange() {
    if (emailTextField.text?.isEmpty)! || (passwordTextField.text?.isEmpty)! {
        print("text is empty")
        loginButton.isEnabled = false
        loginButton.alpha = 0.33
    } else {
        loginButton.isEnabled = true
        loginButton.alpha = 0.55
    }
}

编辑 问题已得到解答,但我注意到在我输入第一个文本字段后该按钮将启用。所以我将 && 更改为 ||因为我希望在两个文本字段都不为空之前禁用该按钮。仅适用于也有此问题的任何人。

您的 textFieldDidChange 方法应该在 viewDidLoad 之外并且应该是 前缀 @objc 因为它是一个选择器。

class YourClass: UIViewController {

    // Your code

    override func viewDidLoad() {
        super.viewDidLoad()
       // Setting text field delegates
        emailTextField.delegate = self
        passwordTextField.delegate = self
        // Disable login button until both textFields are not nil

        emailTextField.addTarget(self, action: #selector(textFieldDidChange), for: UIControlEvents.editingChanged)
        passwordTextField.addTarget(self, action: #selector(textFieldDidChange), for: UIControlEvents.editingChanged)
    }

    @objc func textFieldDidChange() {
        if (emailTextField.text?.isEmpty)! && (passwordTextField.text?.isEmpty)! {
            print("text is empty")
            loginButton.isEnabled = false
            loginButton.alpha = 0.33
        } else {
            loginButton.isEnabled = true
            loginButton.alpha = 0.55
        }
    }

}

目标应添加到相应的文本字段 - emailTextFieldpasswordTextField

您没有为 viewDidLoad 方法

放置 "}"
override func viewDidLoad() {
    super.viewDidLoad()
   // Setting text field delegates
    emailTextField.delegate = self
    passwordTextField.delegate = self
    // Disable login button until both textFields are not nil
    textField.addTarget(self, action: #selector(textFieldDidChange), for: UIControlEvents.editingChanged)

}



   @objc func textFieldDidChange() {
         if (emailTextField.text?.isEmpty)! && (passwordTextField.text?.isEmpty)! {
             print("text is empty")
             loginButton.isEnabled = false
             loginButton.alpha = 0.33
         } else {
             loginButton.isEnabled = true
             loginButton.alpha = 0.55
         }
     }