7

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:か?

4

1 に答える 1

7

コントロールイベントを送信することで、私は正しい軌道に乗っていました。間違ったイベントを選択しただけです。

これはうまくいきます:

[textField sendActionsForControlEvents:UIControlEventEditingChanged];
于 2013-04-22T12:22:38.930 に答える