tableView和gesture手势冲突(响应链问题)
2015-09-16 10:24
483 查看
当你在一个View上添加了Tap点击事件,同时你又在这个View上放了一个TableView,那么tableViewcell的点击事件就会失去响应。
分析原因:当View上添加了Tap事件之后,Tap在响应链中的位置高于tableViewcell的Select。(tap事件会cancelTouchsInView),所以在View上接收不到来自table的事件,造成失去响应。
因此,当我们点击cell的时候要让tap失去响应或者同时相应。
做法:
如果想让Tap和cell同时相应,将cancelTouchsInView属性设置为NO即可。如果想让table响应cell事件,table外响应Tap事件,那么需要设置一下gesture的代理。
分析原因:当View上添加了Tap事件之后,Tap在响应链中的位置高于tableViewcell的Select。(tap事件会cancelTouchsInView),所以在View上接收不到来自table的事件,造成失去响应。
因此,当我们点击cell的时候要让tap失去响应或者同时相应。
做法:
如果想让Tap和cell同时相应,将cancelTouchsInView属性设置为NO即可。如果想让table响应cell事件,table外响应Tap事件,那么需要设置一下gesture的代理。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) { return NO; } return YES; }当点击cell的时候Tap在响应链中无效,在table外能够响应,OK!
相关文章推荐
- Java Deferred/Promise 库JDeferred 实例
- 【笔记】1.Jquery获取单选/复选的值
- 排序(一) 选择排序算法
- [Mysql] "Too many connections"
- 什么是Modbus
- NewRelicAgent(CustomAnalyticEvent.cxx.o), building for iOS simulator, but linking in object file built for OSX, for architecture x8(botched)
- 使用Visual Studio从Linux迁移C++库到Windows
- Intent.ACTION_DIAL虚拟机上不能运行
- 9月第2周全球域名商(国际域名)新增注册量TOP20
- 剑指Offer系列---(23)包含min函数的栈
- [人月神话]读书笔记9--再论没有银弹("No Silver Bullet Refired")
- load data infile上亿条的海量数据导入mysql的那些事
- 建模工具
- pdf.js使用教程
- The Triangle - 1163
- 合并多个dll为一个dll
- Murano Weekly Meeting 2015.09.15
- 同一个网页布局中的滑动门和tab选项卡
- cvCreateImage和cvCreateImageHeader等函数的区别
- test2.5