博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIGestureRecognizer 事件冲突
阅读量:6905 次
发布时间:2019-06-27

本文共 756 字,大约阅读时间需要 2 分钟。

当你程序的view使用了手势UIGestureRecognizer,而你在这个view上面又添加了按钮,那么按钮的响应回调事件方法是不会被调用的,但是按钮是可以看到被按下的高亮效果。(ios4,ios5的bug,ios6就没有了)

因为 根据响应链来看,这个view上的所有触摸事件都被手势给吸收了,所以要解决这个bug,要给这个手势代理加一些事件过滤,对button事件就不要拦截独吞了。代码如下:
- (void)addGestureRecognizer{
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                         action:@selector(hiddenKeyboard)];
    tap.delegate = self;
    self.gestureOfHiddenKeyboard = tap;
    [self.view addGestureRecognizer:tap];
    [tap release];
}
#pragma mark UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
   
    if ([touch.view isMemberOfClass:[UIButton class]]) {
        //放过button点击拦截
        return NO;
    }else{
        return YES;
    }
   
}

转载于:https://www.cnblogs.com/ldc529/p/3822825.html

你可能感兴趣的文章
面向物联网的几大开源操作系统
查看>>
百度分享按钮代码
查看>>
openCV vs2013配置
查看>>
Resin优化方案
查看>>
GC参数整理
查看>>
前后端常见的几种鉴权方式
查看>>
Oracle11g DMP 文件导入到 10g
查看>>
双网卡同时使用配置
查看>>
恢复密码
查看>>
20180504早课记录03-Linux
查看>>
11.交换路由远程管理
查看>>
GIT命令
查看>>
rip路由协议基本配置
查看>>
守护进程 python
查看>>
搭建FTP
查看>>
Entity Framework 的事务 DbTransaction
查看>>
Java Service Wrapper简介与使用(转)
查看>>
马哥学习----李洋个人笔记-----rpm包管理器
查看>>
Apache与Nginx的优缺点比较
查看>>
【Linux】Install Redis on Centos
查看>>