2012-09-25 131 views
1

我在垂直UIScrollView内的水平UIScrollView内有一个多向UIScrollView。当我达到最内层scrollView的水平内容限制时,包含水平滚动视图就像我想要的那样开始滚动。UIScrollView内的UIScrollView在UIScrollView内

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

如果所有的垂直内容在最内层都是可见的(所以没有垂直滚动是可能的),那么顶层垂直滚动视图接管罚款。任何线索如何解决这个问题?

如果我在垂直scrollView中嵌入照片分页scrollView,我会得到与Apple“PhotoScroller”示例代码相同的行为。如果照片没有放大,那么水平和垂直滚动视图都可以使用。如果照片放大,但平移停止,因为它已达到水平或垂直限制,则只有水平滚动视图起作用。

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

回答

0

为了回答我自己的问题,我使用了gestureRecognizerShouldBegin:delegate来确定在平移手势开始时最内侧的scrollView是否位于边界处。如果是这样,我回应了shouldRecognizeSimultaneouslyWithGestureRecognizer: 委托来启用内部scrollView和垂直scrollView上的UIPanGestureRecognizer。这允许一个手势同时滚动。然后,我在两个scrollView上重载setContentOffset以禁止滚动错误的滚动。

我想一个更好的答案很可能是更换UIPanGestureRecognizer上时,在边界开始,拖过去的边界抵消自身的自定义手势识别器内的UIScrollView。但是,我无法让它工作。

还不清楚为什么这个横向版本自动工作。也许在UIScrollViewPanGestureRecognizer中有一些特殊情况处理来处理水平情况,或者与直接的superView交互。