在Objective C中获得第一响应者

我无法弄清楚哪个UITextField是当前的第一响应者。

我想要做的是设置一个布尔值,如果用户点击一个特定的UITextField 。 所以要做到这一点,我需要能够判断这个特定的文本字段是否成为第一响应者。

我知道如何设置第一响应者,但不知道如何判断一个领域是否真的成为第一响应者。


[...]但只是不知道如何判断一个领域是否真的成为第一响应者。

UIViewUIResponder继承了isFirstResponder方法,告诉你这一点。

找到第一个响应者的最简单方法是在没有检查单独的控件/视图并且没有多种方法的情况下对所有不同类型的可能的第一响应者进行检查,就是在UIView上添加一个findFirstResponder方法:

UIView的+ FirstResponder.h

#import <UIKit/UIKit.h>

@interface UIView (FirstResponder)
- (UIView *)findFirstResponder;
@end

UIView的+ FirstResponder.m

#import "UIView+FirstResponder.h"

@implementation UIView (FirstResponder)

- (UIView *)findFirstResponder
{
    if ([self isFirstResponder])
        return self;

    for (UIView * subView in self.subviews) 
    {
        UIView * fr = [subView findFirstResponder];
        if (fr != nil)
            return fr;
    }

    return nil;
}

@end

为什么不使用UITextFieldDelegate并实现textFieldDidBeginEditing:方法? 只要文本字段获得焦点,就会调用它。

UITextFieldDelegate协议参考


if(![myTextField isFirstResponder])
{
    // do stuff
}
链接地址: http://www.djcxy.com/p/44285.html

上一篇: Get firstresponder in Objective C

下一篇: UISearchBar cancel button issue