如何查找当前的第一响应者
2016-04-20 11:25
323 查看
有时候总是有需求来获取当前的第一响应者,例如让TextField收键盘,隐藏视图等等操作都需要获取当前的第一响应者,那么该如何获取呢?
注意:这个方法虽然简单,但是调用了私有API在平时调试的时候可以使用这种方法,但是打包上线的时候需要把该方法屏蔽掉,不然极有可能被打回。
下面介绍下现在公认比较好的一种方法:
建立分类UIResponder+FirstResponder
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
相关文章推荐
- 搜索算法8之1014
- Apache—DBUtils框架简介、DbUtils类、QueryRunner类 、ResultSetHandler接口
- Linux配置ssh无密码验证,rsync
- SQL Server追踪StoredProcedure(存储过程)执行语句
- 解决/lib64/libc.so.6: version `GLIBC_2.14' not found
- 利用HttpClient和HtmlParser构造简单爬虫
- Android中根据Activity的Category搜索匹配的Activity集合,并对此集合排序
- 第七节--ROS操作系统---理解ROS话题topics
- 使用一年ESB感受
- 目标检测、跟踪、识别标准测试视频集和图像数据库
- awk使用笔记:多维数组(带例子)
- java学习笔记1
- SSO(Single Sign On)系列(一)--SSO简介
- Lua从入门到放弃--打印表Demo
- ArcGIS教程:存储时态数据的最佳做法
- C#学习点点滴滴 e.Handled的意思
- 实例讲解C语言编程中的结构体对齐
- eclipse关联jar包源代码
- 编译原理:用bison实现输入二进制数,输出十进制数
- c#中的快捷键