Если заявление не ведет себя так, как ожидалось в Swift 4 - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь написать оператор if, который проверяет, набрал ли пользователь что-нибудь в поле имени пользователя и пароля. Если в обоих полях есть какие-либо символы, мы устанавливаем:

self.loginButton.isEnabled = true
self.loginButton.layer.opacity = 1

Если это не так, мы устанавливаем для первого значение false, а для второго значение 0,2.

Это мой код:

if self.emailTextField.text!.isEmpty || self.passwordTextField.text!.isEmpty
    {
        self.loginButton.isEnabled = false
        self.loginButton.layer.opacity = 0.2
    }
    else if self.emailTextField.text!.isEmpty == false || self.passwordTextField.text!.isEmpty == false
    {
        self.loginButton.isEnabled = true
        self.loginButton.layer.opacity = 1
    }

Когда я запускаю приложение, независимо от того, что я помещаю в текстовые поля, кнопка всегда будет неактивной и будет иметь непрозрачность 0,2. Как я могу это исправить?

1 Ответ

1 голос
/ 07 марта 2019

Вы можете подумать, что ваш код наблюдает за изменениями в текстовых полях, но это не

// inside viewDidLoad
 emailTextField.addTarget(self, action: #selector(self.textChanges(_:)), for: UIControl.Event.editingChanged)
 passwordTextField.addTarget(self, action: #selector(self.textChanges(_:)), for: UIControl.Event.editingChanged)

И получите изменения здесь

@objc func textChanges(_ textField: UITextField) {
  changed()
}  
func changed() { 
    if self.emailTextField.text!.isEmpty || self.passwordTextField.text!.isEmpty
    {
        self.loginButton.isEnabled = false
        self.loginButton.layer.opacity = 0.2
    }
    else  
    {
        self.loginButton.isEnabled = true
        self.loginButton.layer.opacity = 1
    } 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...