2013-04-22 12 views
7

私はUITextFieldを持つUIAlertViewを持っています。私はUIAlertViewデリゲートを接続していて、UITextFieldのテキストに応じてalertViewShouldEnableFirstOtherButton:にYESまたはNOを返します。UIAlertViewは、変更後に `alertViewShouldEnableFirstOtherButton:`を呼び出す方法を教えてください。

私はtextFieldのテキストをプログラムで変更する必要があります。これは期待どおりに動作します。

残念ながら、私はUIAlertViewをalertViewShouldEnableFirstOtherButton:代理メソッドを呼び出す方法を知らないので、textFieldのテキストを変更した後に他のボタンを有効または無効にします。

私はUIAlertViewがUITextFieldのターゲットとして登録すると思っていたので、textFieldからUIControlEventValueChangedを送信しようとしました。うまくいきませんでした。スタックトレースから


私は、デリゲートメソッドは、プライベートUIAlertView方法_alertSheetTextFieldDidChange:から呼び出された考え出しました。

したがって、テキストを変更した後に[self.currentAlert performSelector:@selector(_alertSheetTextFieldDidChange:) withObject:textField];を実行すると、デリゲートメソッドが呼び出され、ボタンの有効状態が変更されます。しかし、これはプライベートメソッドなので、アプリはおそらく拒否されます。私はそれを危険にさらしたくありません。


アラートビューコールalertViewShouldEnableFirstOtherButton:を作るためのクリーンな方法はありますか?

答えて

8

私はコントロールイベントを送信して正しい軌道に乗っていました。私はちょうど間違った出来事を選ぶ。

これは動作します:

[textField sendActionsForControlEvents:UIControlEventEditingChanged]; 
+0

を私は、同様にこの問題に遭遇し、この答えは動作し、それを行うための正しい方法であると思われます – Alex

関連する問題