I put it in pageViewController: willTransitionToViewControllers: and used dispatch_after . With this solution, the user cannot quickly scroll 2-3 times, as in pageViewController: didFinishAnimating: previousViewControllers: transitionCompleted:
- (void)pageViewController:(UIPageViewController *)pageViewController willTransitionToViewControllers:(NSArray<UIViewController *> *)pendingViewControllers { pageViewController.view.userInteractionEnabled = NO; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ pageViewController.view.userInteractionEnabled = YES; }); }
source share