首页 > 解决方案 > UITextField 不再隐藏后禁用 UIButton?

问题描述

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

@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. 因此,我必须确保如果显示所有文本字段,UIButton负责添加更多的UITextFields将被禁用,但如果任何一个UITextFields被删除(.isHidden = true),按钮应该再次启用。

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

@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
        }
    }
}

标签: iosswiftuibuttonuitextfield

解决方案


缺少 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
    }

}

推荐阅读