当界涉及到到点击屏幕隐藏键盘等需要在self.view上添加单击手势的时候,如果界面上有UICollectionView或者UITableView就会导致cell的select代理不响应
一、这时候如果我们想点击整个collectionView都不响应手势,可以进行如下操作:
tapGesture.delegate = self;
#pragma mark -UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isDescendantOfView:collectionView]) {
return NO;
}
return YES;
}
如果我们想只有点击cell时不响应,点击collectionView的其他区域依旧响应手势,可以这样设置:
tapGesture.delegate = self;
#pragma mark -UIGestureRecognizerDelegate
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isDescendantOfView:collectionView]) {
if ([collectionView indexPathForItemAtPoint:[touch locationInView:collectionView]]) {
return NO;
}
}
return YES;
}
也就是比UICollectionView多了一个判断,这个判断就是想知道是否点击区域在cell上。
如果我们想点击UITableViewCell响应手势,可以这样设置:
tapGesture.delegate = self;
BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { - (
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}