UIView阻止了UIScrollView的手势识别器

时间:2014-09-12 01:25:42

标签: ios objective-c layout

您好UIView就像这样UIScrollViewUIView是一个本身透明的容器,但有许多子视图不是。

-------------------------
-   UIScrollView        -
-                       -
-     -------------     -   
-     -  UIView   -     -   
-     -------------     -     
-------------------------

UIView是透明的,但它会阻止UIScrollView在触摸时滚动。一些子视图是按钮,因此它们具有覆盖滚动动作的轻击手势,但UIView框架中的透明间隙仍然阻止滚动手势。有没有办法防止这种情况发生?我仍然想用它作为容器来保存我的其他子视图。

3 个答案:

答案 0 :(得分:2)

您不应将userInteractionEnabled设置为,因此您希望它难以处理。我认为正确的方法是将UIView子类化并覆盖- pointInside: withEvent:,如下所示。

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event
{
    CGPoint localPoint = [self convertPoint:point fromView:self];
    for (UIView *subview in self.subviews) {
        if ([subview pointInside:localPoint withEvent:event]) {
            return YES;
        }
    }
    return NO;
}

使用此视图,您可以与视图内的子视图进行交互,如果不触及子视图,则滚动滚动视图。

答案 1 :(得分:1)

谢谢你的回答。但我发现这个解决方案适合我:

How to get touches when parent view has userInteractionEnabled set to NO in iOS

答案 2 :(得分:0)

在滚动视图内的视图上将userInteractionEnabled设置为FALSE

myView.userInteractionEnabled = FALSE;