web-dev-qa-db-ja.com

UITextFieldがFirstResponderになったときに通知を受ける

UITextFieldbecomeFirstResponderの通知を受け取るにはどうすればよいですか?

isFirstResponderのように確認するか、becomeFirstResponderによって最初のレスポンダーになるように設定できます

ユーザーがこのテキストフィールドを最初に応答したときに、通知を受け取るか、イベントを処理したいのですが。

ありがとう。

25
shebelaw

テキストフィールドのデリゲートに来て、このオプションのデリゲートメソッドを実装する必要があります。

- (void)textFieldDidBeginEditing:(UITextField *)textField; 
38
rooster117

UITextFieldDelegateメソッドの実装に加えてtextFieldDidBeginEditing:UITextFieldTextDidBeginEditingNotification通知に登録できます。

通知方法は次のとおりです。

- (void)someTextFieldDidBeginEditing:(NSNotification *)notification {
    UITextField *textField = (UITextField *)notification.object;
}
13
rmaddy

デリゲートは間違いなく行く方法です。残念ながら、私の状況では、コントローラーはUITextFieldサブクラスのデリゲートであり、そのプレースホルダーテキストを変更する必要があったため、それを使用できませんでした。代わりに、メソッド- (BOOL)canBecomeFirstResponder;- (BOOL)resignFirstResponder;をオーバーライドします。必ずスーパーに電話してください。

1
estobbart

OSXの場合、NSControlTextDidBeginEditingNotificationに依存するときにボタンに副作用があることに注意する必要があります。

編集を開始し、いくつかのボタンを押して、テキストフィールドの編集を再開しても、編集を再開しても2番目のNSControlTextDidBeginEditingNotificationは表示されません。

この動作が問題を引き起こす場合は、UITextFieldTextDidChangeNotificationが代替手段になる可能性があります。

0
Pisca46