iOS 手勢與點擊事件衝突的解決方案

問題描述:

當頁面內容加載失敗時展現可以點擊重新加載的錯誤頁(點擊重新加載使用的是單擊手勢),當頁面重新加載成功出現tableViewCell後,移除錯誤頁,但點擊頁面仍然響應單擊手勢,而不是響應cell的點擊效果。

解決方案:

1、遵守手勢的協議 UIGestureRecognizerDelegate
2、實現其代理方法

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    // 若爲UITableViewCellContentView(即點擊了tableViewCell),則不截獲Touch事件(只解除的是cell與手勢間的衝突,cell以外仍然響應手勢)
    if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"])
    {
        return NO;
    }

    // 若爲UITableView(即點擊了tableView任意區域),則不截獲Touch事件(完全解除tableView與手勢間的衝突,cell以外也不會再響應手勢)
    if ([touch.view isKindOfClass:[UITableView class]]
    {    
        return NO;
    }

    return YES;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章