iOS如何使collectionView接收触摸,如果它低于某些uiview

时间:2015-09-22 02:41:19

标签: ios objective-c cocoa-touch uiview

我问一些不同的情况:

iOS How to make UIButton below UICollectionView receive touch?

但我也不知道是否可以在uiview下面对齐collectionView,没有透明的backgroundColor并且可以接受触摸?

enter image description here

我希望然后我移动手指在蓝色视图触发器集合视图滚动行为,我也希望UIButton接收触摸。

点击测试不是解决方案。

为什么?

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    if ([self pointInside:point withEvent:event]) {
        for (UIView *subview in [self.subviews reverseObjectEnumerator]) {
            CGPoint convertedPoint = [subview convertPoint:point fromView:self];
            UIView *hitTestView = [subview hitTest:convertedPoint withEvent:event];
            if (hitTestView) {
                return hitTestView;
            }
        }
        return self;
    }
    return nil;
}

因为当手指处于蓝色视图时它不会被触发。

1 个答案:

答案 0 :(得分:0)

您可以使用userInteractionEnabled = YES将UIView(蓝色)子类化,然后使用此hitTest

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    id hitView = [super hitTest:point withEvent:event];
    if (hitView == self) return nil; // <--- pass-through if touch on UIView (blue view)
    else return hitView; // touch on children (UIButton)
}