UITextField を持つ UIAlertView があります。UIAlertView デリゲートを接続alertViewShouldEnableFirstOtherButton:
し、UITextField のテキストに応じて YES または NO を返します。
プログラムで textField のテキストを変更する必要があります。これは期待どおりに機能します。
残念ながら、UIAlertView でデリゲート メソッドを呼び出す方法がわからないalertViewShouldEnableFirstOtherButton:
ため、textField のテキストを変更した後に他のボタンを有効または無効にします。
UIAlertView が UITextField の対象として登録されていると思ったのでUIControlEventValueChanged
、textField から を送信してみました。うまくいきませんでした。
スタック トレースから、デリゲート メソッドがプライベート UIAlertView メソッドから呼び出されていることがわかりました_alertSheetTextFieldDidChange:
。
したがって[self.currentAlert performSelector:@selector(_alertSheetTextFieldDidChange:) withObject:textField];
、テキストを変更した後に行うと、デリゲート メソッドが呼び出され、ボタンの有効状態が変更されます。ただし、これはプライベートな方法であるため、アプリはおそらく拒否されます。私はそれを危険にさらしたくありません。
アラートビューを呼び出すクリーンな方法はありますalertViewShouldEnableFirstOtherButton:
か?