2012-07-03 16 views
15

私はbecomeFirstResponderのコントロールに焦点を当てる方法を知っていますが、そのコントロール(例:UITextView)が現在フォーカスを持っているかどうかを知る方法はありますか?UITextViewがフォーカスを持っているかどうかを知る方法

EDIT:問題は、たとえば、フォーカスを受け取ったときにUITextViewの背景色を変更したいのですが、isFirstResponderコールをどこに置くべきですか?この場合、通知を使用する必要がありますか?

ありがとうございます。

+0

今はチェックできませんが、 'isFirstResponder'プロパティなどはありませんか? –

+0

存在しない場合は、UITextViewをサブクラス化し、そのエフェクトにivar /プロパティを追加します。その後、-becomeFirstResponderをオーバーライドし、フラグを設定します。 –

+0

ああ、そのようなプロパティに注意を払っていませんでした。はい、実際にisFirstResponderという名前のプロパティがあります。あなたは投票できるように質問に答えることができます。 – JAHelia

答えて

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

これはこれは、焦点

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ 
    if ([text isEqualToString:@"\n"]){ 
     //Lost Focus 
     [textView resignFirstResponder]; 
    } 
    return YES; 
} 
+0

しかし、問題は、たとえば、フォーカスを受け取ったときにUITextViewの背景色を変更したいのですが、どこにisFirstResponderコールを置くべきですか? – JAHelia

+0

親切なご協力ありがとうございます – JAHelia

+0

テキストビューの代理人としてオブジェクトを登録することを忘れないでください(通常、テキストビューの親ビューを所有するビューコントローラ) –

3

するUITextFieldデリゲートメソッドを使用しますが失われUITextViewのデリゲートメソッド、

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

です。テキストフィールドがフォーカスを得たとき

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

(ファーストレスポンダをbacame)、それがフォーカス

を失ったとき

- (void)textFieldDidEndEditing:(UITextField *)textField;が発射されます。

関連する問題