您的位置:首页 > 其它

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的代理。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
当点击cell的时候Tap在响应链中无效,在table外能够响应,OK!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: