无标题文章

iOS手势与tableView点击事件冲突

问题描述:

当我们把一个tableView添加到一个View上,而该View又有其他点击手势,这是会出现手势的冲突——点击cell响应的是View的手势,而不是我们想要的cell的 didSelectRowAtIndexPath方法。

解决思路:

给view的点击手势设置代理,在gestureRecognizer : shouldReceiveTouch:方法中做判断,返回yes表示该手势有效,返回NO表示该手势无效,当点击cell时让View的点击手势无效,这时celldidSelectRowAtIndexPath方法就会有效。

解决办法:

方法一:判断点击的点是否在tableView内

//判断触摸点的位置,根据位置决定点击手势是否有效

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

//拿到触摸点

CGPoint point = [touch locationInView:self.bottomView];

//转换坐标系

CGPoint nPoint = [self.bottomView convertPoint:point toView:self.bottomView.tableView];

//判断转换坐标后的点的位置

return  [self.bottomView.tableView pointInside:nPoint withEvent:nil] ? NO : YES;

}

方法二: 判断触摸事件的view的类型

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

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

return NO;

}else {

return YES;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容