我有一个简单的任务,但我似乎无法弄清楚。我有一个有 5 个UITextFields
的UIViewController
。其中 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
.因此,我必须确保如果显示所有文本字段,则负责添加更多UITextFields
的UIButton
将被禁用,但如果删除任何UITextFields
(.isHidden = true
(,则应再次启用该按钮。
更新:这是用户点击"隐藏"按钮后运行的代码,它基本上隐藏了第 3 个、第 4 个或第 5 个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
}
}
}
缺少其他条件。
@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
}
}