UITextField
becomeFirstResponder
の通知を受け取るにはどうすればよいですか?
isFirstResponder
のように確認するか、becomeFirstResponder
によって最初のレスポンダーになるように設定できます
ユーザーがこのテキストフィールドを最初に応答したときに、通知を受け取るか、イベントを処理したいのですが。
ありがとう。
テキストフィールドのデリゲートに来て、このオプションのデリゲートメソッドを実装する必要があります。
- (void)textFieldDidBeginEditing:(UITextField *)textField;
UITextFieldDelegate
メソッドの実装に加えてtextFieldDidBeginEditing:
、UITextFieldTextDidBeginEditingNotification
通知に登録できます。
通知方法は次のとおりです。
- (void)someTextFieldDidBeginEditing:(NSNotification *)notification {
UITextField *textField = (UITextField *)notification.object;
}
デリゲートは間違いなく行く方法です。残念ながら、私の状況では、コントローラーはUITextFieldサブクラスのデリゲートであり、そのプレースホルダーテキストを変更する必要があったため、それを使用できませんでした。代わりに、メソッド- (BOOL)canBecomeFirstResponder;
&- (BOOL)resignFirstResponder;
をオーバーライドします。必ずスーパーに電話してください。
OSXの場合、NSControlTextDidBeginEditingNotification
に依存するときにボタンに副作用があることに注意する必要があります。
編集を開始し、いくつかのボタンを押して、テキストフィールドの編集を再開しても、編集を再開しても2番目のNSControlTextDidBeginEditingNotification
は表示されません。
この動作が問題を引き起こす場合は、UITextFieldTextDidChangeNotification
が代替手段になる可能性があります。