您的位置:首页 > 产品设计 > UI/UE

解决点击UITableViewCell时和自定义添加的手势冲突的问题

2017-04-19 21:36 525 查看
问题重现:

自义定封装了一个View,把View添加到Window上,在View上添加tableView,然后在View上添加轻拍手势,但是问题来了,点击Cell时,总是响应手势方法,不执行tableView:didSelectRowAtIndexPath:方法。

解决办法:

1、给自定义的手势添加代理

2、执行代理方法,判断触摸事件的View的类型,截获所点击的视图,并决定是否手势继续向下响应

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
else {
return YES;
}
}
[/code]或则
- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {    if ([touch.view isKindOfClass:[UIScrollView class]]) {       returnYES;     }    returnNO;}

或者判断点击的点是否在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;
}
[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐