【问题标题】:UIScrollView with added another UIScrollView outside it frame not scrollingUIScrollView 在它的框架之外添加了另一个 UIScrollView 不滚动
【发布时间】:2017-08-07 22:15:34
【问题描述】:

我创建了主滚动视图,用于在屏幕上的页面之间滚动。

这是一个名为scroll 1的深灰色区域。接下来,在这个主滚动条上,我添加了小的 scroll 2(浅灰色区域)。

目前,对于滚动 2,我只能在触摸位于 滚动 1 区域上方。请检查:

在位置添加滚动 2:

CGRectMake(25, -40, 250, 85)]

所以,它在卷轴 1 的框架之外的一半。

我已经设置好了:

scroll1.clipsToBounds = NO;

但这也像剪切触摸一样。我需要能够触摸滚动2,即使它在滚动2之外。如何解决这个问题?

另外,我需要的主要是当我滚动小滚动 2 时 - 滚动 1 不应该被触摸。

【问题讨论】:

    标签: ios cocoa-touch uiscrollview scrollview frame


    【解决方案1】:

    clipsToBounds 仅涵盖渲染而非触摸处理 - 它允许您在边界之外绘制视图,但不会扩展触摸处理。

    在这里实现您想要的最简单的方法是拥有一个足够大的容器视图以容纳两个滚动视图,然后将滚动视图添加到该容器中,而不是将小滚动视图添加到大滚动视图中。

    【讨论】:

    • 正如我在问题的最后几行中所写:“另外,我需要的主要是当我滚动小滚动 2 时 - 滚动 1 不应触碰。”所以我不能改变容器框架。稍后滚动 2 将从滚动 1 移出。
    • 如果在大滚动视图前面添加小滚动视图,大滚动视图将不会捕获小滚动视图的触摸。
    • 是的,但同时如果在位置(x:0,y:-100)添加小滚动条(提醒它是大滚动条的子项),小滚动条将不起作用。这就是我在我的 gif 图像上显示的内容。当我在大滚动区域上方触摸它时,我可以小滚动,但是当我触摸大滚动之外(小滚动的父级)时,它不会滚动。这就是问题所在。
    • 触摸处理仅在父母范围内。如果您添加一个视图,使其部分位于父级边界之外,那么这些区域将不会收到触摸。因此,我说你应该改变你的层次结构。
    • 我已经告诉过你是如何解决这个问题的——重组你的层次结构,不要将小滚动视图添加到大滚动视图中。它们都应该有一个共同的超级视图,该超级视图足够大以容纳它们。你可以通过打乱命中测试来破解它,但你正在逆流而上,可能应该重新考虑你的架构以正确地做到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多