iOS開發(fā)(OC)——單擊手勢與tableView的點擊沖突

不知道各位在做開發(fā)的時候,是否有在同一個頁面里既有單擊的手勢,又有tableView的存在的情況,如果有的話,你可能會發(fā)現(xiàn),你的tableView點擊出問題了,打印一下,你會發(fā)現(xiàn),你單擊tableView的cell時,它卻執(zhí)行了你的單擊手勢的方法,只有長按的時候才能執(zhí)行tableView的點擊方法。這就是手勢沖突的問題,要解決這個問題很簡單,因為系統(tǒng)已經(jīng)給我們提供了代理方法。

首先,我們添加一個單擊手勢

UITapGestureRecognizer *tap=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(keyboardHiden)];
    tap.delegate=self;//這句不要漏掉
    [self.view addGestureRecognizer:tap];

然后,為我們的手勢添加代理UIGestureRecognizerDelegate



重點來了,手勢代理的方法

#pragma mark-手勢代理,解決和tableview點擊發(fā)生的沖突
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {//判斷如果點擊的是tableView的cell,就把手勢給關(guān)閉了
        return NO;//關(guān)閉手勢
    }//否則手勢存在
    return YES;
}

再試一下,是不是問題解決了?

如果是collectionView 的話,這種方法好像不能用了,但是可以為collectionView的每個cell添加一個單擊的手勢,兩個單擊手勢是不會產(chǎn)生沖突的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容