在UIPageViewController中禁用/启用滚动
问题描述:
我得到了viewController
,它继承自UIPageViewController
(@interface PageScrollViewController : UIPageViewController
)现在我想知道如何启用和禁用从UIPageViewController
滚动?当使用UIScrollView
时,你会做setScrollEnabled:NO
和self.view.userInteractionEnabled = NO;
不是一个选项,因为这会阻止整个UIView
而不仅仅是滚动。在UIPageViewController中禁用/启用滚动
编辑 这是PageScrollViewController : UIPageViewController
类:
if ([[notification name] isEqualToString:@"NotificationDisable"]){
NSLog (@"Successfully received the disable notification!");
for (UIGestureRecognizer *recognizer in self.gestureRecognizers) {
recognizer.enabled = NO;
}
}
答
尝试通过UIPageViewController
和禁用的gestureRecognizers
循环/使他们:
for (UIGestureRecognizer *recognizer in pageViewController.gestureRecognizers) {
recognizer.enabled = NO;
}
注:在this SO post发现,此方法仅适用于UIPageViewControllerTransitionStylePageCurl
。你可能想尝试this solution(虽然它似乎有点hacky)。
答
我做了以下事情(我有一个持有UIPageViewController的控制器)。
self.pageController.view.userInteractionEnabled = NO;
而当你想启用滑动或滚动,只需启用用户交互。
答
或者你可以在你的PagingVC投要禁用分页:
self.delegate = nil;
self.dataSource = nil;
而对于再次启用它:
self.delegate = self;
self.dataSource = self;
答
的UIPageViewController dataSource
属性设置为nil
防止滚动,因为页面视图控制器没有办法确定要转换到的“下一个”视图控制器。
self.dataSource = nil // scrolling disabled
self.dataSource = self // scrolling enabled
我试过这个,for循环永远不会执行 – Shinonuma 2013-04-05 08:45:16
你在哪里执行这个循环?将有助于看到一些代码。 – tilo 2013-04-05 08:57:04
我编辑了我的问题 – Shinonuma 2013-04-05 09:10:38