iOS 手勢沖突

一 : view添加手勢與tableView沖突問題

1. 遵守代理協(xié)議
    UIGestureRecognizerDelegate

    2. 給手勢設置代理
    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. 給手勢設置代理
UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(cancelDelete)]; 
apGestureRecognizer.delegate = self;  [注意點]
 [self.collectionview addGestureRecognizer:tapGestureRecognizer];

3. self要實現(xiàn)UIGestureRecognizerDelegate協(xié)議,其中就有gestureRecognizer:shouldReceiveTouch:方法 
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if (touch.view != self.collectionView) {
        return NO;
    }else {
        return YES;
    }
}
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容