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;
}

你可能感兴趣的:(iOS,ios,TableView,手势,UIGesture,Tap)