有時(shí)候總是有需求來獲取當(dāng)前的第一響應(yīng)者镊折,例如讓TextField收鍵盤,隱藏視圖等等操作都需要獲取當(dāng)前的第一響應(yīng)者铝阐,那么該如何獲取呢?
UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)];
NSLog(@"%@",firstResponder);
注意:
這個(gè)方法雖然簡(jiǎn)單铐拐,但是調(diào)用了私有API在平時(shí)調(diào)試的時(shí)候可以使用這種方法矾瑰,但是打包上線的時(shí)候需要把該方法屏蔽掉厕吉,不然極有可能被打回寒波。
下面介紹下現(xiàn)在公認(rèn)比較好的一種方法:
建立分類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