不再隐藏 UITextField 后禁用 UIButton?
Disable UIButton after UITextField is no longer hidden?
我有一个简单的任务,但我似乎无法弄清楚。我有一个 UIViewController
有 5 UITextFields
。其中 2 个 UITextFields
始终可见。当用户点击 UIButton
时会显示其他 3 个。我的目标是禁用 UIButton
,这样用户就可以清楚地看到,在所有 UITextFields
都可见之后,他们不能 "add" 更多 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
),该按钮应该再次启用。
更新: 这是在用户点击 "hide" 按钮后运行的代码,它基本上隐藏了第 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
}
}
}
缺少 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
}
}
我有一个简单的任务,但我似乎无法弄清楚。我有一个 UIViewController
有 5 UITextFields
。其中 2 个 UITextFields
始终可见。当用户点击 UIButton
时会显示其他 3 个。我的目标是禁用 UIButton
,这样用户就可以清楚地看到,在所有 UITextFields
都可见之后,他们不能 "add" 更多 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
),该按钮应该再次启用。
更新: 这是在用户点击 "hide" 按钮后运行的代码,它基本上隐藏了第 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
}
}
}
缺少 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
}
}