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

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

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
    // 判断触摸位置是否在当前视图内
    if ([self pointInside:point withEvent:event]) {
        // 只遍历contenView上的子视图  方便控制
        NSArray * 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的响应链。)