ios - UITextField 不再隐藏后禁用 UIButton?
问题描述
我有一个简单的任务,但我似乎无法弄清楚。我有一个UIViewController
5 UITextFields
。其中 2 个UITextFields
始终可见。当用户点击 a 时,将显示其他 3 个UIButton
。我的目标是禁用,因此用户很明显在所有可见之后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
. 因此,我必须确保如果显示所有文本字段,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
}
}
}
解决方案
缺少 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
}
}
推荐阅读
- google-cloud-platform - Drive API 更改所有权后未发送电子邮件
- javascript - 有没有办法将折线图与charts.js中的分组柱形图对齐?
- sql-server - 我在 2019 SSMS 中没有得到完整的结果,它被截断了,我想显示 2729 个字符
- java - JGraphT:如何尽可能有效地表示一组顶点和边
- amazon-web-services - 根据参数在cloudformation模板中命名?
- bash - 应用程序管理员 AD 角色未提供正确权限
- javascript - 单击缩放按钮时如何防止传单滚动页面?
- java - 如何修复“安装失败。安装失败在Android中重新运行'错误?
- javascript - 替换字符串(带和不带括号),URL 除外
- apache-flink - 应用程序崩溃时的 Flink 任务管理器状态