使用textFieldDidendEditing来启用/禁用swift按钮

时间:2016-01-19 22:49:58

标签: swift

出于某种原因,我不明白为什么在填写文本时我的按钮无法启用。

这就是我设置它的方式。

override func viewDidLoad()
{
    super.viewDidLoad()

    calculateButton.enabled = false

    panelWidthTextField.delegate = self
    panelsWideTextField.delegate = self
    panelHightTextField.delegate = self
    panelsHightTextField.delegate = self
    panelPitchTextField.delegate = self

}
// Disable button when text is missing
func textFieldDidendEditing(textField: UITextField)
{

    if ((panelWidthTextField.text?.isEmpty != nil) &&
        (panelsWideTextField.text?.isEmpty != nil) &&
        (panelHightTextField.text?.isEmpty != nil) &&
        (panelsHightTextField.text?.isEmpty != nil) &&
        (panelPitchTextField.text?.isEmpty != nil))
    {
        calculateButton.enabled = false
    }

    else
    {
        self.calculateButton.enabled = true
    }

}

如果有人有更好的方法来执行此功能,那么所有的帮助和提示都会受到赞赏

2 个答案:

答案 0 :(得分:1)

override func viewDidLoad() {

    panelWidthTextField.delegate = self
    panelsWideTextField.delegate = self
    panelHightTextField.delegate = self
    panelsHightTextField.delegate = self
    panelPitchTextField.delegate = self

    // Disable button
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "textChanged:", name: UITextFieldTextDidChangeNotification, object: nil)
        calculateButton.enabled = false
}

将此功能放入您的班级

 func textChanged(sender: NSNotification) {

    if panelWidthTextField.hasText() && panelsWideTextField.hasText() && panelHightTextField &&  panelPitchTextField.hasText() && panelsHightTextField.hasText(){

        calculateButton.enabled = true
    } else {
        calculateButton.enabled = false
    }
}
  

(myButton必须是出口)

让我知道它是否有效

答案 1 :(得分:0)

而不是cmContextMenu(0) = Array("Cu&t", "owc2") 尝试使用textField.text?.isEmpty != nil

如果!textField.text?.isEmtpy!(文本字段中没有文字),则使用isEmpty(非逻辑运算符)将返回true。 如果false具有任何值(true或false),则询问isEmpty != nil是否将返回true