【发布时间】:2018-11-28 07:48:53
【问题描述】:
如果 TextField 为空,我需要禁用按钮。否则它会崩溃我的应用程序
(线程 1:致命错误:在展开可选值时意外发现 nil)。
我知道,人们在这里写了很多次。但我尝试了 StackOverflow 中的许多示例,例如:
if (MyTextField.text?.isEmpty)! {
MyButton.isEnabled = false
MyButton.alpha = 0.5
}
上面的代码我确实放在了 viewDidLoad 中,但它不起作用。 如果我把按钮放在:
@IBAction func acceptButton(_ sender: Any) {
if (MyTextField.text?.isEmpty)! {
MyButton.isEnabled = false
MyButton.alpha = 0.5
...
然后按钮总是被禁用。即使我在 TextField 中输入了一些数字。
下面的代码也不行:
override func viewDidLoad() {
super.viewDidLoad()
MyTextField.addTarget(self, action: #selector(actionTextFieldIsEditingChanged), for: UIControlEvents.editingChanged)
...
}
...
@objc func actionTextFieldIsEditingChanged(sender: UITextField) {
if sender.MyTextField.isEmpty {
MyButton.isEnabled = false
MyButton.alpha = 0.5
} else {
MyButton.isEnabled = true
MyButton.alpha = 1.0
}
}
其他部分代码我无法使用,因为它是从 2014 年到 2015 年。
【问题讨论】:
-
它在哪里以及如何崩溃?
-
您应该使用 UITextFieldDelegate 方法,例如 textFieldShouldReturn。此方法将在按下返回按钮时调用。
-
@meaning-matters 谢谢你。更新
-
另一种方法是在点击按钮时检查
UITextField是否为空,是否将按钮设置为不执行任何操作,是否不让它执行您的代码。跨度>
标签: ios swift uibutton uitextfield