iOS tableView cell点击与自定义手势tap冲突解决

有时候我们会给tableView 添加tap手势 或者 给tableView的父视图添加Tap手势 来完成某种动作,但是发现添加手势之后,点击cell就会没有反应,两种点击手势发生了冲突

解决方案

给手势添加代理delegate,然后UIGestureRecognizerDelegate的以下一个代理方法即可

1
2
3
4
5
6
7
8
9
10
11
12
#pragma mark - UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
// 输出点击的view的类名
NSLog(@"%@", NSStringFromClass([touch.view class]));
// 若为UITableViewCellContentView(即点击了tableViewCell),则不截获Touch事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}