除非在文本字段中输入内容,否则用户无法按下按钮

时间:2015-12-02 16:23:31

标签: swift

如果在上面的文本字段中没有输入任何内容,那么如何使用segue将您发送到下一个视图控制器的按钮无效?

4 个答案:

答案 0 :(得分:0)

您可以实施optional func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool的{​​{1}}。每次用户在文本字段中输入或删除字符时都会触发它。您可以检查那里的内容,并从那里适当地启用/禁用您的按钮。

答案 1 :(得分:0)

您可以检查TextField的内容:

if myTF.text != "" || myTF.text != nil {
    //TextField contains something
    //enable button
    //segue to next ViewController
} else {
    //TextField empty
    //disable button
}

如果您将其实施到textFieldDidEndEditing(),它将在每次用户输入时进行检查。

确保在您的班级中加入UITextFieldDelegate,例如:

class myClass: UIViewController, UITextFieldDelegate {...}

希望有所帮助:)

答案 2 :(得分:0)

实施UITextFieldDelegate协议并将VC设置为委托。

然后执行 func textField(_ textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) 该协议的方法。

您可以使用此方法检测空字符串。您可以选择彻底并处理复制/粘贴,在这种情况下,您需要使用stringByReplacingCharactersInRange计算替换后的新字符串的值,或者您可以选择不处理复制粘贴,只需检查{{ 1}}。

根据上述内容,您可以相应地设置按钮的range.location > 0属性。

答案 3 :(得分:0)

将此添加到viewdidload,将textfieldVerb替换为文本框的名称,将nextVerbOutlet替换为按钮的名称(作为插座)

self.textFieldVerb.addTarget(self, action: "textFieldChanged:", forControlEvents: .EditingChanged)
        self.textFieldVerb.addTarget(self, action: "textFieldChanged:", forControlEvents: .EditingChanged)
        nextVerbOutlet.enabled = false

然后将此替换textfieldVerb添加到文本框的名称,将nextVerbOutlet添加为按钮名称(作为插座)。这不是在viewdidload中,而是在它下面。

func textFieldChanged(sender: UITextField) {
    // simple validation
    if textFieldVerb.text?.characters.count > 0
        && textFieldVerb.text?.characters.count > 0 {
            self.nextVerbOutlet.enabled = true // re-enable your button
    }
}