在Objective C中获得第一响应者
我无法弄清楚哪个UITextField
是当前的第一响应者。
我想要做的是设置一个布尔值,如果用户点击一个特定的UITextField
。 所以要做到这一点,我需要能够判断这个特定的文本字段是否成为第一响应者。
我知道如何设置第一响应者,但不知道如何判断一个领域是否真的成为第一响应者。
[...]但只是不知道如何判断一个领域是否真的成为第一响应者。
UIView
从UIResponder
继承了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