您的位置:首页 > 其它

如何查找当前的第一响应者

2016-04-20 11:25 323 查看
有时候总是有需求来获取当前的第一响应者,例如让TextField收键盘,隐藏视图等等操作都需要获取当前的第一响应者,那么该如何获取呢?

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];

NSLog(@"%@",firstResponder);


注意:这个方法虽然简单,但是调用了私有API在平时调试的时候可以使用这种方法,但是打包上线的时候需要把该方法屏蔽掉,不然极有可能被打回。

下面介绍下现在公认比较好的一种方法:

建立分类UIResponder+FirstResponder

//
//  UIResponder+FirstResponder.h
//  BobcareDoctorApp
//
//  Created by Japho on 16/3/23.
//  Copyright © 2016年 com.01wisdom. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface UIResponder (FirstResponder)

+ (id)currentFirstResponder;

@end

//
//  UIResponder+FirstResponder.m
//  BobcareDoctorApp
//
//  Created by Japho on 16/3/23.
//  Copyright © 2016年 com.01wisdom. All rights reserved.
//

#import "UIResponder+FirstResponder.h"

static __weak id currentFirstResponder;

@implementation UIResponder (FirstResponder)

+ (id)currentFirstResponder {
currentFirstResponder = nil;
[[UIApplication sharedApplication] sendAction:@selector(findFirstResponder:) to:nil from:nil forEvent:nil];
return currentFirstResponder;
}

- (void)findFirstResponder:(id)sender {
currentFirstResponder = self;
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: