我有一个UIPageViewController
,处理把我的“书”的页面。 然而,每本书页是一个ViewController
具有UIScrollView
的subview
。 该UIScrollView
只能够垂直由于滚动contentSize
。 问题是,当用户滚动scrollview
垂直,作为scrollview
仍在滚动/减速用户无法翻开新的一页。 一个非常简单的方法,看看这是滚动页面,然后尝试挖掘视图的边缘。 这通常更改页面,它确实改变时,页面scrollview
是不动的。 然而,当它移动时,水龙头会导致滚动视图停止移动,而不是翻开新的一页。
如何取消scrollviews
手势如果UIPageViewController
试图用手势通过敲击或平移网页,使翻页动画翻开新的一页?
因为我要实现的行为的一个例子,检查Twitter的iPhone上的官方客户端。 这是可能的,从时间轴左右滑动来查看,而饲料仍然从滚动减速。
一个UIScrollView
滚动事件将阻止其他UIView
动画,所以在Twitter上的情况下,他们很可能刷卡视图之前取消滚动一瞬间。 至于你问你的问题:
“我怎么取消scrollviews手势如果UIPageViewController试图用手势通过敲击或平移网页翻开新的一页,使翻页动画?”
我会提出一个解决办法。
相反,依靠的UIPageViewController
的固有UIPanGestureRecognizer
,包括你自己UIPanGestureRecognizer
在页面视图,以便当页面的适当部分检测到平移和适当的方向进行的是,新的UIPanGestureRecognizer
覆盖UIPageViewController
的UIGestureRecognizer
小号并触发必要的行动。 具体而言,您需要:
(1)使用暂停滚动动画
CGPoint offset = scrollView.contentOffset;
[scrollView setContentOffset:offset animated:NO];
(2)打开网页编程方式使用
- (void)setViewControllers:(NSArray *)viewControllers direction:
(UIPageViewControllerNavigationDirection)direction animated:
(BOOL)animated completion:(void (^)(BOOL finished))completion;
所以,无论是滚动动画将暂停,而翻页是一个流体平移手势内完成。
UIGestureRecognizer
类有可能通过使用设置在其它手势识别器依赖性requireGestureRecognizerToFail:方法。
你的情况,这种方法可以在这种方式来使用:
for (UIGestureRecognizer *gestureRecognizer in pageController.gestureRecognizers) {
for (ViewController *viewController in viewControllers) {
for (UIGestureRecognizer *gestureRecognizerForFail in viewController.scrollView.gestureRecognizers) {
[gestureRecognizerForFail requireGestureRecognizerToFail:gestureRecognizer];
}
}
}
我有同样的问题,我周围的工作我的方式......在我的情况我有变焦启用PDF。 所以,我有,例如:
[scrollView setMaximumZoomScale:6];
[scrollView setMinimumZoomScale:1];
当我初始化控制器及其滚动视图,只是以后我每次改变方向或页面我改变缩放以适应页面的宽度,只有当变焦是“远”
CGFloat desiredWidth = scrollView.frame.size.width/pdfRect.size.width;
if (desiredWidth>[self zoomScale]) {
[scrollView setZoomScale:desiredWidth animated:YES];
}
我希望它能帮助