双水平滚动视图触摸的问题

时间:2011-01-26 08:59:39

标签: iphone uiscrollview hittest touchesbegan

我几周来一直在处理这个问题,但仍然没有解决方案。请帮忙。

我有一个带图像的大滚动视图。每个图像都是屏幕宽,并启用了分页。

在这个滚动视图上的

,在底部,我有另一个带按钮的滚动视图。每个图像的每个按钮。当我按下图像按钮时,大滚动视图会跳转到图像。

因为我有很多图像,所以我在小滚动视图上有很多按钮。

现在,大卷轴和小卷轴工作正常,按钮也正常。

我的问题从小卷轴的远端开始。当我在小卷轴的末尾(但仍然在大卷轴的中间)时,我不希望大手指移动,当我将手指移动到死胡同时。你可以说我想将小卷轴与大卷轴分开,但仍然将它留作子视图(因为我希望它与大卷轴一起移动)。

我已经尝试了继承小卷轴,按钮,覆盖hitTest和touchesBegan / End,但到目前为止还没有。

我真的很沮丧,因为我的客户要求这样做。

我被谷歌搜索了这么久,我找不到任何东西!

HELLLPPPPP!

1 个答案:

答案 0 :(得分:0)

我发现这段代码在我的一个项目中非常有用:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    UIView* result = [super hitTest:point withEvent:event];

    if (/* result or any of its superviews are equal to your little scroll view */) {
        [self setContentOffset:CGPointZero animated:YES];
        self.scrollEnabled = NO;
    } else {
        self.scrollEnabled = YES;    
    }
    return result;
}

如果我理解你的问题,我认为这会给你理想的行为。我在if语句(注释)中有一些伪代码,因为遍历所有超级视图都需要循环,这会使代码更加复杂,但如果您熟悉视图层次结构,您通常可以找到更简单的解决方案

我希望这会有所帮助,如果您在理解代码时遇到任何问题,我将很乐意为您解释。

编辑:基本的想法是,如果您的手指触摸小滚动视图,则在大滚动视图中滚动滚动,以便大滚动视图不会滚动。如果您的手指未触及小滚动视图,则滚动大滚动视图将重新打开,并且应该正常运行。