tableview和collectionview的代理点击事件和单击手势事件冲突的解决

产生此类问题,原因在于单击手势先响应了 将tableview或者collectionview的事件给拦截所导致。所以,通过手势代理,不进行拦截,即可解决此类问题。

1.通过手势的UIGestureRecognizerDelegate代理来解决此类问题

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(dismissBubule)];

tap.delegate = self;

[self.view addGestureRecognizer:tap];

2.实现代理方法

#pragma mark - UIGestureRecognizerDelegate

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

//注意传入的参数是当前的CollectionView 或者 tableview对象

if ([touch.view isDescendantOfView:self.collectionView]) {

return NO;

}

return YES;

}

你可能感兴趣的:(tableview和collectionview的代理点击事件和单击手势事件冲突的解决)