26

コントロールにフォーカスを設定する方法は知ってbecomeFirstResponderいますが、そのコントロール(たとえばUITextView)が現在フォーカスを持っているかどうかを知る方法はありますか?

編集:問題は、(たとえば)フォーカスを受け取ったときにUITextViewの背景色を変更したいということです。isFirstResponder呼び出しを正確にどこに置く必要がありますか?この場合、通知を使用する必要がありますか?

よろしくお願いします。

4

2 に答える 2

48
if([txtView isFirstResponder]){
     //Has Focus
} else {
     //Lost Focus
}

これはUITextViewのデリゲートメソッドです。

- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView{
    //Has Focus
    return YES;
}

これは焦点を失います

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
    if ([text isEqualToString:@"\n"]){
        //Lost Focus
        [textView resignFirstResponder];
    }
    return YES;
}
于 2012-07-03T06:36:22.677 に答える
6

UITextFieldデリゲートメソッドを使用します。textFieldがフォーカスを取得したとき(bacameファーストレスポンダー)

- (void)textFieldDidBeginEditing:(UITextField *)textField;解雇されます、

そしてそれが焦点を失ったとき

- (void)textFieldDidEndEditing:(UITextField *)textField;解雇されます。

于 2017-03-17T09:18:33.077 に答える