如果Swift语句中的语句不符合预期

时间:2019-03-06 22:20:40

标签: swift if-statement

我正在尝试编写一条if语句,以检查用户是否在用户名和密码字段中输入了任何内容。如果两个字段中都有字符,我们设置:

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
    }

如果不是,我们将第一个设置为false,第二个设置为0.2。

这是我的代码:

{{1}}

当我运行该应用程序时,无论我在文本字段中输入什么内容,该按钮将始终处于非活动状态,并设置为0.2不透明度。我该如何解决?

1 个答案:

答案 0 :(得分:1)

您可能会认为您的代码正在观察文本字段文本中的变化,但事实并非如此

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