【发布时间】:2017-01-25 01:45:08
【问题描述】:
我正在使用UIAlertController 向用户显示一个对话框以输入5 位 CRN。我希望禁用 Add 按钮,直到 UITextField 中有 5 个且只有 5 个数字。
用户界面如下所示:
这是UIAlertController 的属性设置:
var alertController: UIAlertController!
var addAlertAction: UIAlertAction! {
return UIAlertAction(title: "Add", style: .default)
}
这是我在 viewDidLoad 方法中初始化它们的方式:
self.alertController = UIAlertController(title: "Add Class", message: "Input CRN", preferredStyle: .alert)
self.alertController.addAction(addAlertAction)
self.alertController.addAction(UIAlertAction(title: "Cancel", style: .destructive))
self.alertController.addTextField { (textField) in
textField.delegate = self
textField.keyboardType = .numberPad
}
这是我尝试使用UITextFieldDelegate 方法禁用/启用按钮的方式:
func textFieldDidEndEditing(_ textField: UITextField) {
if ((textField.text?.characters.count)! == 5) {
self.alertController.actions[0].isEnabled = true
} else {
self.alertController.actions[0].isEnabled = false
}
}
但是,该按钮始终保持禁用(或启用)状态。它永远不会被启用。怎么了?
【问题讨论】:
-
尝试使用
textFieldDidBeginEditing
标签: ios uitextfield swift3 uialertcontroller ios10