IOS宏定义(方法名称做参数)和respondToSelector
来源:互联网 发布:单片机入门书籍 编辑:程序博客网 时间:2024/06/06 00:31
我写一个宏定义,来写点击界面背景的手势处理([self.view endEditing:yes])
//给背景设置tap点击手势
#define addTapRecognizer(p_tapMethodName,p_delegate,p_target,p_View_Container)\
{\
SEL selector1 = NSSelectorFromString(p_tapMethodName);\
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:p_target action:selector1];\
tapRecognizer.cancelsTouchesInView = NO;\
tapRecognizer.delegate = p_delegate;\
[p_View_Container addGestureRecognizer:tapRecognizer];\
}\
//
UIGestureRecognizerDelegate的代理函数
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
//return ![touch.view.superview isKindOfClass:[UITextField class]];
return ![touch.view isKindOfClass:[UIButton class]];
}
一,调用
-(void)viewDidLoad
{
addTapRecognizer(@"handleBackgroundTap:", self, self,self.view);
}
我写个方法的原因是,界面背景有个tap事件,点击背景,键盘消失,但是,点击textField的clear按钮时候,有时候,键盘是消失了,但是并没有对textField的内容进行清理,这就是说,触发了tap手势事件,没有触发textField的clear事件。
这个现象的原因是,无论点击到界面的哪里,label,button ,textField,都会触发tap的代理事件(gestureRecognizer:),但不一定触发自己写的tap处理事件(handleBackgroundTap:),代理事件返回yes不一定触发自定义的tap处理事件,但如果代理事件返回NO,一定不触发tap自定义处理事件。
现在我按这个写,问题解决了,但是有个弊端,就是点击按钮的时候,键盘不消失了,需要手动设置代码让键盘消失。
二,关于宏展开
#define addTapRecognizer(tapMethodName,delegate,target,View_Container)\
{\
SEL selector1 = NSSelectorFromString(tapMethodName);\
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:target action:selector1];\
tapRecognizer.cancelsTouchesInView = NO;\
tapRecognizer.delegate = delegate;\
[View_Container addGestureRecognizer:tapRecognizer];\
}\
调用 addTapRecognizer(@"handleBackgroundTap:",self,self,self.view);
- IOS宏定义(方法名称做参数)和respondToSelector
- JoinPoint获取参数的方法和名称(1)
- IOS - 常用宏定义和功能方法
- IOS方法定义和使用
- AOP日志,记录调用类、方法、方法参数名称、方法参数值(包括对象和基本类型)
- springboot 中使用 AOP 打印 类名、方法名、方法参数名称和方法参数值
- 符号名称和功能定义
- [IOS 开发] OC 定义一个方法,参数数量可变.
- iOS 使用可变参数va_list, 定义一个方法
- 宏定义中把表示宏的名称和宏的数值进行一一对应的方法
- Swift方法参数名称省略
- swift 方法参数名称省略
- 定义一个抽象类Shape,成员有图形名称(name)和求面积的抽象方法Area()
- Keil宏定义和如何知道单片机资源名称
- C语言可变参数宏定义方法
- python方法参数定义
- C# 方法参数定义
- 宏定义概念和无参宏定义方法
- POJ 1258 Agri-Net (prim最小生成树)
- debug assertion failed dbgheap.c line:1044 问题解决
- 对话框
- Linux动态频率调节系统CPUFreq
- MPMoviePlayer 播放流媒体
- IOS宏定义(方法名称做参数)和respondToSelector
- 富贵在天“乾隆工”
- union
- pdf转换成ppt转换器教程
- C++中获取时间戳并将时间戳作为文件名的一部分
- 用PHP实现邮件发送(包括发送html邮…
- ECshop 数据库表结构
- mysql:表注释和字段注释
- mysql master/slave