1

我有UIScrollView一个水平UIScrollView内一个垂直内的多向UIScrollView。当我达到最里面的滚动视图的水平内容限制时,包含的水平滚动视图开始按照我的意愿滚动​​。

但是当我达到最内层滚动视图的垂直内容限制时,我没有在顶级垂直滚动视图上获得任何操作。

如果所有垂直内容在最内层都可见(因此不可能垂直滚动),那么顶级垂直滚动视图就可以正常工作。关于如何解决这个问题的任何线索?

如果我将他们的照片分页滚动视图嵌入到垂直滚动视图中,我会在 Apple“PhotoScroller”示例代码中得到相同的行为。如果照片没有缩放,那么水平和垂直滚动视图都可以工作。如果照片已缩放但由于达到水平或垂直限制而停止平移,则只有水平滚动视图有效。

这是使用将照片分页实现为 UIScrollView 而不是 UIPageViewController 的示例代码的旧版本。使用当前 UIPageViewController 版本,缩放照片时无法进行分页。

4

1 回答 1

0

为了回答我自己的问题,我使用了 gestureRecognizerShouldBegin: delegate 来确定平移手势开始时最里面的 scrollView 是否处于边界。如果是这样,我回复了 shouldRecognizeSimultaneouslyWithGestureRecognizer: delegate 以在内部 scrollView 和垂直 scrollView 上启用 UIPanGestureRecognizer。这允许一个手势同时滚动两者。然后,我在两个滚动视图上都覆盖了 setContentOffset 以抑制滚动错误的滚动视图。

我认为更好的答案可能是将内部 UIScrollView 上的 UIPanGestureRecognizer 替换为自定义手势识别器,该手势识别器在边界开始并拖过边界时会自行取消。但是,我无法让它发挥作用。

我仍然不清楚为什么它的水平版本只是自动工作。也许 UIScrollViewPanGestureRecognizer 中有一些特殊情况处理来处理水平情况,或者与即时 superView 交互。

于 2012-09-30T16:09:29.663 回答