如何知道UITextView是否有焦点

时间:2012-07-03 06:29:19

标签: iphone objective-c ios

我知道将becomeFirstResponder方法设置为控件,但是如何知道该控件(例如UITextView)当前是否关注它?

编辑:问题是我希望(例如)在获得焦点时更改UITextView的背景颜色,我应该在哪里准确地调用isFirstResponder?我应该在这种情况下使用通知吗?

非常感谢。

2 个答案:

答案 0 :(得分:43)

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;
}

答案 1 :(得分:4)

使用UITextField委托方法。当textField获得焦点时(bacame first responder)

- (void)textFieldDidBeginEditing:(UITextField *)textField;将被解雇,

当它失去焦点时

- (void)textFieldDidEndEditing:(UITextField *)textField;将被解雇。