如何在swift中输入所有UITextFields中的文本之前如何禁用按钮?

时间:2015-04-04 15:33:15

标签: validation swift uitextfield

我需要一种方法来禁用保存按钮,直到在所有必需的文本框中输入文本为止?我正在Swift中开发应用程序,我在Objective-c中找到了很多答案。由于我现在已经掌握了Objective-c知识,所以我无法弄清楚它的含义。

有没有人可以在Swift中解决这个问题?

我知道如何启用/禁用按钮。我也知道如何检查文本字段是否为空。我只是不确定如何制作它以便我的代码始终检查它是否为空。我尝试了一个while循环,但正如我所料,这冻结了一切。

3 个答案:

答案 0 :(得分:3)

列出实现此目的的一种方法:

class ViewController: UIViewController, UITextFieldDelegate {

    @IBOutlet weak var textField: UITextField!
    @IBOutlet weak var button: UIButton!

    //Need to have the ViewController extend UITextFieldDelegate for using this feature
    func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {

        // Find out what the text field will be after adding the current edit
        let text = (textField.text as NSString).stringByReplacingCharactersInRange(range, withString: string)

        if !text.isEmpty{//Checking if the input field is not empty
            button.userInteractionEnabled = true //Enabling the button
        } else {
            button.userInteractionEnabled = false //Disabling the button
        }

        // Return true so the text field will be changed
        return true
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //Setting the Delegate for the TextField
        textField.delegate = self
        //Default checking and disabling of the Button
        if textField.text.isEmpty{
            button.userInteractionEnabled = false // Disabling the button
        }
    }
}

Reference Link for the above solution

答案 1 :(得分:2)

尽管到目前为止给出了所有评论,并且没有进一步夸大评论区域,我尝试提供一些如何解决问题的提示:

  • 将所有文本字段放入插座集合
  • 将所有文本字段的委托设置为viewController
  • 实现委托的didEndEditing方法,并在该方法中迭代出口集合以检查每个文本字段的输入

请注意,这只是实现这一目标的一种方式,但您可能会明白这一点。

答案 2 :(得分:1)

使用文本字段的委托方法(或目标操作模式)来检查用户继续操作所需的条件。如果满足,请启用该按钮。