私はUIAlertController
を使用して、5桁のCRNを入力するダイアログをユーザに提示しています。 UITextField
に5桁しかない場合は、Add
ボタンを無効にします。UIAlertControllerのUITextFieldに応じてUIAlertActionを無効にする方法はありますか?
はここUIは次のようになります。
ここ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
}
こちら
func textFieldDidEndEditing(_ textField: UITextField) {
if ((textField.text?.characters.count)! == 5) {
self.alertController.actions[0].isEnabled = true
} else {
self.alertController.actions[0].isEnabled = false
}
}
しかし、ボタンが無効(または有効)のまま、すべての時間:私はUITextFieldDelegate
メソッドを使用してボタンを有効/無効にしようとしているwが。それは有効になることはありません。何がうまくいかないの?
'textFieldDidBeginEditing'を試してみてください – Santosh