0

我已经处理这个问题好几个星期了,仍然没有解决方案。请帮忙。

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

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

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

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

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

我已经尝试将小滚动、按钮、覆盖 hitTest 和 touchesBegan/End 子类化,但到目前为止还没有。

我真的很沮丧,因为我的客户要求按照他的方式工作。

我已经用谷歌搜索了很长时间,但我找不到任何东西!

哎呀!

4

1 回答 1

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 语句(注释)中有一些伪代码,因为遍历所有超级视图需要循环,这会使代码更加复杂,但是如果您熟悉视图层次结构,通常可以找到更简单的解决方案.

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

编辑:基本思想是,如果您的手指正在触摸小滚动视图,则在大滚动视图中滚动,这样大滚动视图就不会滚动。如果您的手指没有触摸小滚动视图,则大滚动视图的滚动将重新打开,并且应该正常运行。

于 2011-01-26T09:20:54.930 回答