2012-07-03 117 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;将被解雇。

相关问题