2012-07-03 150 views
15

我知道becomeFirstResponder設置焦點在控件上的方法,但是如何知道該控件(例如UITextView)目前是否關注它?如何知道UITextView是否有焦點

編輯:問題是,我想(例如)改變UITextView的背景顏色,當它收到焦點,我應該在哪裏把isFirstResponder調用準確?我應該在這種情況下使用通知嗎?

非常感謝。

+0

現在不能檢查,但沒有'isFirstResponder'屬性或其他東西? –

+0

如果不存在,則爲UITextView子類添加一個ivar /屬性。然後覆蓋-becomeFirstResponder並設置標誌。 –

+0

哦,是的,沒有注意這樣的屬性,是的,實際上有一個名爲isFirstResponder的屬性..你可以回答這個問題,所以你可能會被投票。 – JAHelia

回答

37
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; 
} 
+0

但問題是,我想(例如)改變UITextView的背景顏色,當它收到焦點,我應該在哪裏把isFirstResponder調用準確? – JAHelia

+0

非常感謝您的親切幫助 – JAHelia

+0

不要忘記註冊一些對象作爲文本視圖的委託(通常是擁有文本視圖的父視圖的視圖控制器) –

3

使用的UITextField委託方法。當文本框得到關注(bacame第一響應)

- (void)textFieldDidBeginEditing:(UITextField *)textField;將被解僱,

,當它失去焦點

- (void)textFieldDidEndEditing:(UITextField *)textField;將被解僱。

相關問題