iosuiviewcontrolleruigesturerecognizeruipageviewcontroller

How do I Disable the swipe gesture of UIPageViewController?


In my case parent UIViewController contains UIPageViewController which contains UINavigationController which contains UIViewController. I need 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?


Solution

  • 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.