iOS tableView点击与手势冲突的解决方法

2019-08-15  本文已影响0人  JohnayXiao

在tableView上加了一个点击手势, 但didSelectRowAtIndexPath的代理方法就不执行了,只会执行手势事件, 原因是应该是UITapGestureRecognizer吞掉了touch事件,导致didSelectRowAtIndexPath方法无法响应。

解决方法是实现UIGestureRecognizerDelegate的代理方法

创建点击事件并遵循delegate

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                           initWithTarget:self
                           action:@selector(tapGesture:)];
        tap.delegate = self;
        [_tableView addGestureRecognizer:tap];

实现代理方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
   
    if ([touch.view isKindOfClass:[UITableView class]]) {
        return YES;
    }
    return  NO;
}
上一篇 下一篇

猜你喜欢

热点阅读