【问题标题】:Disable UIButton after UITextField is no longer hidden?UITextField 不再隐藏后禁用 UIButton?
【发布时间】:2018-12-11 12:22:03
【问题描述】:

我有一个简单的任务,但我似乎无法弄清楚。我有一个 UIViewController 有 5 个 UITextFields。其中 2 个 UITextFields 始终可见。当用户点击UIButton 时,将显示其他 3 个。我的目标是禁用UIButton,因此用户很明显,在所有UITextFields 可见后,他们无法“添加”更多UITextFields。我试着这样做:

@IBAction func addTextFieldPressed(_ sender: UIButton) {
    if !thirdChoiceTextField.isHidden, !forthChoiceTextField.isHidden, !fifthChoiceTextField.isHidden {
        addTextFieldButton.isEnabled = false
    }
        if thirdChoiceTextField.isHidden {
            UIView.animate(withDuration: 0.2) {
                self.thirdChoiceTextField.isHidden = false
            }
        }
        else if forthChoiceTextField.isHidden {
            UIView.animate(withDuration: 0.2) {
                self.forthChoiceTextField.isHidden = false
            }
        }
        else {
            UIView.animate(withDuration: 0.2) {
                self.fifthChoiceTextField.isHidden = false

        }
    }
}

但它不起作用。您可以添加UITextFields。还有一个UIButton 允许用户删除添加的3 个UITextField。所以,我必须确保如果显示所有文本字段,负责添加更多UITextFieldsUIButton 将被禁用,但如果删除任何UITextFields (.isHidden = true),按钮应该再次启用。

更新:这是在用户点击“隐藏”按钮后运行的代码,它基本上隐藏了第三、第四或第五UITextField

@objc func hideTextField(_ sender: UIButton) {
    if let  field = sender.superview?.superview as? UITextField, !field.isHidden {
        UIView.animate(withDuration: 0.2) {
            field.text = ""
            field.isHidden = true
        }
    }
}

【问题讨论】:

    标签: ios swift uibutton uitextfield


    【解决方案1】:

    缺少 else 条件。

    @IBAction func addTextFieldPressed(_ sender: UIButton) {
        if !thirdChoiceTextField.isHidden, !forthChoiceTextField.isHidden, !fifthChoiceTextField.isHidden {
            addTextFieldButton.isEnabled = false
        }
        else{
            addTextFieldButton.isEnabled = true
        }
        if thirdChoiceTextField.isHidden {
            UIView.animate(withDuration: 0.2) {
                self.thirdChoiceTextField.isHidden = false
            }
        }
        else if forthChoiceTextField.isHidden {
            UIView.animate(withDuration: 0.2) {
                self.forthChoiceTextField.isHidden = false
            }
        }
        else {
            UIView.animate(withDuration: 0.2) {
                self.fifthChoiceTextField.isHidden = false
    
        }
      }
    }
    

    更新(尝试添加此按钮以启用按钮)

    @objc func hideTextField(_ sender: UIButton) {
        if let  field = sender.superview?.superview as? UITextField, !field.isHidden {
            UIView.animate(withDuration: 0.2) {
                field.text = ""
                field.isHidden = true
            }
        }
    
        if !thirdChoiceTextField.isHidden, !forthChoiceTextField.isHidden, !fifthChoiceTextField.isHidden {
            addTextFieldButton.isEnabled = false
        }
        else{
            addTextFieldButton.isEnabled = true
        }
    
    }
    

    【讨论】:

    • 没有任何区别。
    • 这正是我在看到您的回复之前所做的。这解决了这个问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    相关资源
    最近更新 更多