【问题标题】:problem with dual horizontal scroll view touches双水平滚动视图触摸问题
【发布时间】:2011-01-26 08:59:38
【问题描述】:

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

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

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

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

目前,大卷轴和小卷轴都正常,按钮也正常。

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

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

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

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

HELLLPPPPP!

【问题讨论】:

    标签: iphone uiscrollview hittest touchesbegan


    【解决方案1】:

    这是我发现在我的一个项目中非常宝贵的一段代码:

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

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

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

    【讨论】:

    • 我应该把它放在大滚动视图子类还是主视图子类?
    • 大滚动视图子类。抱歉,不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多