【Objective-C】解決輕拍手勢事件與TableView的Cell點選事件衝突的問題

weixin_33850890發表於2016-08-22

問題描述:UITableView上新增了輕拍手勢,手勢時間裡寫了回收鍵盤,此時UITableView的Cell點選方法就和輕拍手勢時間衝突,此時該怎麼解決問題?

解決方法:
1.當前的ViewController籤協議,UIGestureRecognizerDelegate
2.寫手勢的代理方法

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
    if([NSStringFromClass([touch.view class])isEqual:@"UITableViewCellContentView"]){
        return NO;//當觸碰到TableView的Cell的ContentView手勢事件不響應
    }
    return YES;
}

問題追加:那如果TableView上又巢狀一個CollectionView怎麼辦,這個代理方法還有效嗎?

解決方法:
這個代理方發還是有效的

-(BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch {
    if([NSStringFromClass([touch.view class])isEqual:@"UITableViewCellContentView"] || [NSStringFromClass([touch.view class])isEqual:@"UIView"]){
        return NO;//多加一個邏輯判斷觸碰到View時也讓手勢事件不響應
    }
    return YES;
}

這個代理方法是蘋果官方提供的,大概也是考慮到開發者能遇到這樣的小問題吧

相關文章