嵌套的UIScrollViews,两者都有水平滚动

时间:2013-07-08 11:58:15

标签: ios uiscrollview uiscrollviewdelegate

我在另一个内嵌了UIScrollView,两者都是水平的。

外部一个包含多个UIScrollViews,假设每页一个(具有多个页面的文档)。 内部可以只包含适合屏幕的UIView或者也可以包含一些应该滚动的更大的UIView(水平放置,但如果用户捏住屏幕,那么他可以向两个方向滚动) 。

当我快速滚动文档并且外部滚动视图决定滚动其子视图时,问题就出现了,而不让内部滚动视图(那些contentSize大于屏幕大小的滚动视图)滚动。 如果我轻轻滚动外部滚动视图,它会让内部滚动视图也滚动。

理想的行为是,即使我快速滚动外部滚动视图,它也应滚动内部滚动视图,直到其内容已完全显示,然后让外部滚动视图滚动。

我尝试覆盖hitTest:withEvent:,以便外部滚动视图应询问其当前可见的UIScrollView子视图是否应该滚动,但这当前仅在向前滚动时才有效。问题是我无法检测到hitTest:withEvent:中的滚动方向,所以我也在考虑将此代码移到其他地方,但我不知道这是否是正确的方法。

我很抱歉句子中的所有“滚动”字样,但我不知道如何以更好的方式解释这个问题

1 个答案:

答案 0 :(得分:0)

如果外部scrollView仍然动画移动,它将获得所有手势,而不是让内部手柄处理它们。

您可以尝试使用gestureRecognizer的requireGestureRecognizerToFail:方法,以便外部滚动视图的panGestureRecognizer需要外部scrollViews的panGestureRecognizer失败。它可能会使滚动感觉有点滞后,我不确定这是否会解决你的问题,但嘿,尝试没有伤害。