Здравствуйте, я получаю две ошибки для textFieldDidChange (Swift) - PullRequest
0 голосов
/ 14 сентября 2018

Может кто-нибудь помочь мне? Я получаю эти две ошибки

использование неразрешенного идентификатора

и

использование локальной переменной textFieldDidChange перед ее объявлением

Вот мой код

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
    }
}

Редактировать На вопрос был получен ответ, однако я заметил, что кнопка активируется после того, как я набрал текст в первом текстовом поле. Поэтому я изменил && на || потому что я хотел, чтобы кнопка была отключена, пока оба текстовых поля не были пустыми. Просто для тех, кто имеет эту проблему.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Вы пропустили "}" для 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
         }
     }
0 голосов
/ 14 сентября 2018

Ваш метод textFieldDidChange должен быть за пределами viewDidLoad и должен иметь префикс-ed с @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
        }
    }

}

И цель должнадобавить в соответствующие текстовые поля - emailTextField и passwordTextField.

...