user2159978 user2159978 - 5 months ago 372
iOS Question

How do I Disable the swipe gesture of UIPageViewController?

In my case parent

UIViewController
contains
UIPageViewController
which contains
UINavigationController
which contains
UIViewController
. I want to add a swipe gesture to the last view controller, but swipes are handled as if they belong to page view controller. I tried to do this both programmatically and via xib but with no result.

So as I understand I can't achieve my goal until
UIPageViewController
handles its gestures. How to solve this issue?

Answer

The documented way to prevent the UIPageViewController from scrolling is to not assign the dataSource property. If you assign the data source it will move into 'gesture-based' navigation mode which is what you're trying to prevent.

Without a data source you manually provide view controllers when you want to with setViewControllers:direction:animated:completion method and it will move between view controllers on demand.

The above can be deduced from Apple's documentation of UIPageViewController (Overview, second paragraph):

To support gesture-based navigation, you must provide your view controllers using a data source object.

Comments