Swift+Storyboard:如何仅当两个文本框非空时启用按钮?
解决Swift中双文本框非空才启用按钮的问题
嘿,我懂你的需求啦——只有当两个文本框都填了有效内容时才让按钮可用对吧?你当前的代码有个小漏洞:它只检查了触发事件的那个文本框,完全没考虑另一个的状态,比如第一个文本框填了、第二个空着的时候,按钮也会被误启用。
我给你调整下代码,完美实现这个功能:
第一步:给两个文本框添加IBOutlet
先给你的两个文本框分别设置IBOutlet,比如命名为firstTextField和secondTextField,这样我们能在代码里获取它们的内容。
第二步:抽离统一的状态检查方法
单独写个方法来判断两个文本框的状态,代码更清晰也方便复用:
private func updateNextButtonState() { // 去掉文本前后的空白字符,避免用户只输入空格就触发按钮的情况 let hasFirstValidText = !firstTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty let hasSecondValidText = !secondTextField.text!.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty // 只有两个文本都有效时,才启用按钮 nextBtn.isEnabled = hasFirstValidText && hasSecondValidText }
第三步:修改你的IBAction方法
把原来的enableNextBtn改成直接调用上面的检查方法就行:
@IBAction func enableNextBtn(_ sender: UITextField) { updateNextButtonState() }
第四步:初始化状态&关联事件
在viewDidLoad里初始化按钮的初始状态(一开始肯定是禁用的),并且一定要把两个文本框的「Editing Changed」事件都关联到这个IBAction上,这样不管哪个文本框内容变化,都会触发状态检查:
override func viewDidLoad() { super.viewDidLoad() // 初始状态禁用按钮 updateNextButtonState() }
这样修改后,只有当两个文本框都输入了非空白的内容时,按钮才会被启用,完全符合你的需求~
内容的提问来源于stack exchange,提问作者Ping
相关产品推荐
相关产品推荐

