禁用按钮,直到Swift中的字段已满

时间:2015-08-20 15:27:12

标签: ios swift

我想创建一个登录页面,用户在填写字段之前无法点击登录按钮。我已经看到了如何在objective-c中做到这一点,但我希望能在swift中做到这一点,而且我不太确定该怎么做!到目前为止我有这个,这是在我的loginViewController.swift文件中。

if username.isEmpty || password.isEmpty {
        loginButton.userInteractionEnabled = false
     } else {
        loginButton.userInteractionEnabled = true
     }

它会检查空字段,但填写字段时按钮不会实时激活。我该怎么做?

这是我的文件中的代码,该代码位于loginTapped的函数中。

@IBAction func loginTapped(sender: AnyObject) {

    let username = usernameField.text
    let password = passwordField.text

    /** [[Check for empty fields]] */

     if username.isEmpty || password.isEmpty {
        var errorFieldBorderColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1.0)
        usernameField.layer.borderWidth = 1.0
        usernameField.layer.cornerRadius = 5.0
        usernameField.layer.borderColor = errorFieldBorderColor.CGColor
        usernameField.textColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1.0)


        } else {
        loginButton.userInteractionEnabled = true
     }

    PFUser.logInWithUsernameInBackground(username, password:password) {
        (user: PFUser?, error: NSError?) -> Void in
        if user != nil {
            // Do stuff after successful login.
        } else {
            // The login failed. Check error to see why.
        }
    }
}

2 个答案:

答案 0 :(得分:5)

textfield outlets:

@IBOutlet weak var loginUsernameTextField: UITextField!

@IBOutlet weak var loginPasswordTextField: UITextField!

@IBOutlet weak var loginButtonOutlet: UIButton!

在viewDidload中:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "textChanged:", name: UITextFieldTextDidChangeNotification, object: nil)
loginButtonOutlet.enabled = false

然后添加函数和代码

func textChanged(sender: NSNotification) {
    if loginUsernameTextField.hasText() && loginPasswordTextField.hasText() {
        loginButtonOutlet.enabled = true
    }
    else {
        loginButtonOutlet.enabled = false
    }
}

我认为这应该做的工作

答案 1 :(得分:0)

我认为至少有两种方法可以做到这一点。

首先 - 简单的方法是将验证代码放入登录按钮操作中。在这种情况下,按钮不会被禁用或灰显,它将接收用户交互。然后将执行一些验证代码并为用户生成相应的消息。

第二 - 如果你想让你的按钮变灰并且仅在所有输入都有效时启用,你必须实现UITextFieldDelegate方法并在每次文本字段失去焦点时跟踪有效/无效输入(例如) ,这样您就可以收到通知,何时启用按钮。