美文网首页
cell嵌套TableView时,改变内层cell的响应链。

cell嵌套TableView时,改变内层cell的响应链。

作者: 彭小先生 | 来源:发表于2018-11-06 17:12 被阅读0次

最近项目中需要在嵌套的TableView的cell点击时响应最外层的选择事件,但是嵌套的cell的按钮事件却要响应。所以我们需要在嵌套的cell上做一次处理。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    // 判断触摸位置是否在当前视图内
    if ([self pointInside:point withEvent:event]) {
        // 只遍历contenView上的子视图  方便控制
        NSArray<UIView *> * superViews = self.contentView.subviews;
        // 倒序 从最上面的一个视图开始查找
        for (NSUInteger i = superViews.count; i > 0; i--) {
            UIView * subview = superViews[i - 1];
            // 转换坐标系 使坐标基于子视图
            CGPoint newPoint = [self convertPoint:point toView:subview];
            // 得到子视图 hitTest 方法返回的值
            UIView * view = [subview hitTest:newPoint withEvent:event];
            // 如果子视图返回一个view 就直接返回 不在继续遍历
            if (view ) {
//                NSLog(@"%@",[view class]);
                return view;
            }
        }
        
        return [[self superview] superview];
    }
    return nil;
}

相关文章

网友评论

      本文标题:cell嵌套TableView时,改变内层cell的响应链。

      本文链接:https://www.haomeiwen.com/subject/bowuxqtx.html