一 : view添加手勢與tableView沖突問題
1. 遵守代理協(xié)議
UIGestureRecognizerDelegate
2. 給手勢設(shè)置代理
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(respondsToTapGesture:)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
3.實現(xiàn)代理方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
// 點擊的view的類名
NSLog(@"%@", NSStringFromClass([touch.view class]));
// 點擊了tableViewCell企孩,view的類名為UITableViewCellContentView掂器,則不接收Touch點擊事件
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
return YES;
}
二 : view添加手勢和collectionView的沖突問題
想要的效果 : 既觸發(fā)didSelectItemAtIndexPath方法垒手,又能在CollectionView自身上處理TapGesture
問題 : collectionView沒有內(nèi)容視圖, 不能像上面那樣解決沖突
解決方法 :
1. 遵守代理協(xié)議
UIGestureRecognizerDelegate
2. 給手勢設(shè)置代理
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cancelDelete)];
apGestureRecognizer.delegate = self; [注意點]
[self.collectionview addGestureRecognizer:tapGestureRecognizer];
3. self要實現(xiàn)UIGestureRecognizerDelegate協(xié)議,其中就有g(shù)estureRecognizer:shouldReceiveTouch:方法
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if (touch.view != self.collectionView) {
return NO;
}else {
return YES;
}
}