iOS解决单击手势和UITableView的点击事件冲突

2021-01-05  本文已影响0人  啸狼天

一个页面既有tap手势又有UITableView,那么这个时候tableview的点击就会被点击手势取代,点击cell会没有反应,这时候我们要处理一下手势冲突
使用手势的代理进行解决,确认一下代理<UIGestureRecognizerDelegate>
首先我们先添加一个手势:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(disMissGrantureADD:)];
tap setNumberOfTapsRequired:1];
tap.delegate=self;//确认一下代理
[self.view addGestureRecognizer:tap];

#pragma mark - UIGestureRecognizerDelegate
/*
 //解决手势冲突,这个代理方法默认返回NO,会阻断继续向下识别手势,如果返回YES则可以继续向下传播识别。
 1、遵循UIGestureRecognizerDelegate
 2、重写相应代理方法
 3、指定手势代理者
 4、利用代理方法
 */
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
     // 判断如果点击的是tableView的cell,就把手势给关闭了
    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
        return NO;//关闭手势
    }else{
        return YES;//否则手势存在
    }
}
上一篇 下一篇

猜你喜欢

热点阅读