我在垂直UIScrollView中的水平UIScrollView中有一个多方向UIScrollView。当我达到最里面的scrollView的水平内容限制时,包含的水平滚动视图开始滚动。
但是当我达到最里面的scrollView的垂直内容限制时,我不会在顶层垂直scrollView上得到任何操作。
如果所有垂直内容在最内层都可见(所以不能进行垂直滚动),那么顶层垂直滚动视图就可以了。有什么关于如何解决这个问题的线索吗?
如果我将他们的照片分页scrollView嵌入到一个垂直的scrollView中,我会在苹果的"PhotoScroller“示例代码中得到同样的行为。如果照片未缩放,则水平和垂直滚动视图都将起作用。如果照片已缩放,但由于达到水平或垂直限制而停止平移,则只有水平滚动视图有效。
这使用的是旧版本的示例代码,该代码将照片分页实现为UIScrollView而不是UIPageViewController。使用当前的UIPageViewController版本,在缩放照片时不能分页。
发布于 2012-10-01 00:09:30
为了回答我自己的问题,我使用gestureRecognizerShouldBegin: scrollView来确定当平移手势开始时,最里面的委托是否在边界上。如果是,我响应shouldRecognizeSimultaneouslyWithGestureRecognizer:委托在内部scrollView和垂直scrollView上启用UIPanGestureRecognizer。这允许一个单一的手势同时滚动这两个。然后,我在两个scrollViews上都重写了setContentOffset,以抑制错误的滚动。
我认为更好的答案可能是将内部UIScrollView上的UIPanGestureRecognizer替换为自定义手势识别器,该识别器在边界处启动并拖过边界时会自动取消。但是,我不能让它工作。
我仍然不明白为什么这个水平版本会自动工作。也许在UIScrollViewPanGestureRecognizer中有一些特殊的情况处理来处理水平情况,或者与immediate superView交互。
https://stackoverflow.com/questions/12592114
复制相似问题