UIPageViewController disable scrolling
ios6, uipageviewcontroller
Solution
UIPageViewController uses some UIScrollView object to handle scrolling (at least for transitionStyle `UIPageViewControllerTransitionStyleScroll`). You can iterate by controller's subviews `pageViewController.view.subviews` to get it. Now, you can easly enable/disable scrolling:
- (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;
}
}
}
Problem
I am using a UIPageViewController with transitionStyle `UIPageViewControllerTransitionStyleScroll` and navigationOrientation `UIPageViewControllerNavigationOrientationVertical` I also have a `UIPanGestureRecognizer` on the view and I want to disable page scrolling when the pan gesture is active. I am trying to set the following when the gesture begins: ``` pageViewController.view.userInteractionEnabled = NO; ``` This seems to have no effect, or it appears to work sporadically. The only other way I have found to do it (which works) is to set the UIPageViewController dataSource to nil while the pan gesture is running, however this causes a huge delay when resetting the dataSource.