UITapGestureRecognizer与UITableView同在一个页面导致didSelectRowAtIndexPath方法不响应

今天测试给我提了一个需求,就是在做用户筛选的时候,点击空白区域,回收筛选列表,我用了手势UITapGestureRecognizer,但是这时就出现了问题,因为列表是动态添加的,所以不能指定空白区域的frame,并且导致了UITableView的didSelectRowAtIndexPath方法不响应,通过百度,我发现原来是UITapGestureRecognizer的didSelectRowAtIndexPath的响应。

解决方法:

#pragma mark - UIGestureRecognizerDelegate

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

{

NSLog(@"gestureRecognizer = %@",NSStringFromClass([touch.view class]));

if ([NSStringFromClass([touch.view class]) isEqualToString:@"UIView"])

{

return NO;

}

else if ([NSStringFromClass([touch.view class]) isEqualToString:@"InvestDetailSortButton"])

{

return NO;

}

return YES;

}

通过打印,找到能点击的区域的类名,通过类名来区分,这样就可以了。

原文地址:https://www.cnblogs.com/huiyi-520/p/8120437.html

时间: 2024-10-27 04:53:34

UITapGestureRecognizer与UITableView同在一个页面导致didSelectRowAtIndexPath方法不响应的相关文章

PHP 页面跳转到另一个页面的多种方法方法总结

如何在PHP中从一个页面重定向到另外一个页面呢?这里列出了三种办法,供参考. 一.用HTTP头信息 也就是用PHP的HEADER函数.PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WEB服务器的控制指令,例如声明返回信息的类型("Context-type: xxx/xxx"),页面的属性("No cache", "Expire")等等. 用HTTP头信息重定向到另外一个页面的方法如下: 复制代码 代码如下: &l

(微信小程序)二 : 创建一个页面。

首先先看一下pages的目录结构吧. 我创建了一个topics页面.3个文件全创建好了之后 我往topics.js添加数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* ---topics.js----*/ Page({   data:{       topics: [       {title:"初始angular"},       {title:"初始ionic"},       {title:"初始wech

(微信小程序)二 : 创建一个页面

首先先看一下pages的目录结构吧. 我创建了一个topics页面.3个文件全创建好了之后 我往topics.js添加数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /* ---topics.js----*/ Page({   data:{       topics: [       {title:"初始angular"},       {title:"初始ionic"},       {title:"初始wech

一个JSP页面导致的tomcat内存溢出

今天新能测试组的同事找我看一个奇怪的现象.一个tomcat应用,里面只有一个单纯的jsp页面,而且这个jsp页面没有任何java代码(想用这个jsp页面测试在她的服务器上的一个tomcat的最大QPS).但是用loadrunner压测了几分钟之后,分配了1024M堆内存的tomcat居然包heap space outofmemory!这个页面的代码如下: <%@ page language="java" contentType="text/html; charset=I

Angular 缓存用父子路由 IOS下点击下一个选项导致的页面错乱

现象: 为了子页面返回父页面不刷新,需要用到子路由,如果没有表单,完全是没问题的,当父页面有表单输入,子页面中也有表单输入时,点击键盘的下一项会把父页面显示出来,如下图: 上图中,是子路由界面,光表在最下行,当点击键盘所标注的下一项时,会出现像下图的现像,子页面和父页面同时出现. 解决办法,当去子路由时,隐藏父路由,返回时再显示.写了一个全局的公用方法,如果有碰到相同问题,可以参考 /*加载数据显示loading效果*/ $rootScope.$on("$stateChangeSuccess&q

iOS中一个页面显示两个tableview的情况

一个页面显示两个tableview,并且每个tableview上的数据都不一样,一般用以下方法: 首先建一个继承自UIView的类,来表示用来切换tableview的view //在view的类的.h文件中 #import <UIKit/UIKit.h> @protocol MyAttentionHeadViewDelegate <NSObject> //建一个叫MyAttentionHeadViewDelegate的一个代理 @optional //两个代理方法(可选择实现opt

一个页面有多个iframe找不到结果的问题

前面介绍过iframe,也介绍过跨域请求,这里就不再赘述了. 今天在实际的业务中碰到了一个现象,一个erp管理系统,用到了上传图片和iframe访问其他的域名的情况,上传图片用到了ajaxfileupload,而这个上传图片的控件本身就有iframe,也就是说导致了一个页面中有2个iframe,导致我上传图片想返回操作结果的时候返回不到任何结果,例如 前台访问调用的方法 $.ajaxFileUpload({             url : 'http://*******.com/active

解决vue多个路由共用一个页面的问题

在日常的vue开发中我们可能会遇见多个路由需要共用一个页面的需求,特别是当路由是通过动态添加的,不同的路由展示的东西只是数据不同其他没有变化.例如: ? 1 2 3 4 5 6 7 8 9 10 11 let routes = [   {path:"/zhanshan",   components:Person,   },   {path:"/lisi",   components:Person,   },   {path:"/wangwu",

一个sql导致temp表空间爆掉

Buffer sort引发的血案 今天遇到的一个问题,在线系统上,有两张表,test1大概50G,test2大概200G,需要查询出来test1表中部分记录,并且这些记录不存在test2表中.于是就写了一个sql: select t1.* from test1 t1, test2 t2 where t1.col1 = t2.col1(+) and t1.col2 = t2.col2(+) and t1.col3 = t2.col3(+) and t2.col1 is null; 因为是在线系统,