我正在使用带有UINavigationController
(第一个pvc)的UIPageViewController
作为根控制器。
在这个pvc实例里面,我有多个视图,我可以滚动浏览。这一切都很好。
然后我选择从其中一个视图中推进,我向下钻取到第二个pvc的水平。当我用第二个pvc滚动并到达序列的末尾时,我会自动继续滚动第一个UIPageViewController
。
我的问题是如何在第二个pvc滚动的那一刻禁用手势并锁定第一个pvc的滚动?
这是导航控制器堆栈
/////--UINavigationController
/////----------UIPageViewController (first instance of pvc)
/////---------------UITableViewController [ TV01 ] push here to second pvc
/////---------------UITableViewController [ TV02 ]
/////---------------UITableViewController [ TV03 ]
/////---------------------UIPageViewController (second instance of pvc)
/////---------------------------UIViewController
/////---------------------------UIViewController
/////---------------------------UIViewController (is scrolling to TV02)
答案 0 :(得分:0)
我有一个问题的解决方案,我想在这里发布我的答案。主UIPageViewController
使用一些UIScrollView对象来处理滚动(至少对于transitionStyle UIPageViewControllerTransitionStyleScroll
)。在推送新UIPageViewController
之前,我已禁用此UIPageViewController的滚动选项。因此,您始终有一个UIPageViewController
有效进行滑动。
您可以通过控制器的子视图(pageViewController.view.subviews)进行迭代来获取它。
-(void)setScrollEnabled:(BOOL)enabled forPageViewController:(UIPageViewController*)pageViewController{
for(UIView* view in pageViewController.view.subviews){
if([view isKindOfClass:[UIScrollView class]]){
UIScrollView* scrollView=(UIScrollView*)view;
[scrollView setScrollEnabled:enabled];
return;
}
}
}