禁用 UIPageViewController 滑动 - Swift

Disable UIPageViewController Swipe - Swift

在我的项目中,我使用 UIPageViewController 在 5 个子 UIViewController 之间滑动。在某些子视图控制器中,我需要禁用 UIPageViewController 的滑动手势,以便当用户滑动时它不会更改为其他视图。 那么如何禁用子视图控制器的滑动?

感谢帮助..谢谢

在您的页面视图控制器中,添加以下内容

override func viewDidLoad(){
    super.viewDidLoad()
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(yourpageviewcontroller.enableSwipe(_:)), name:"enableSwipe", object: nil)
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(yourpageviewcontroller.disableSwipe(_:)), name:"disableSwipe", object: nil)

}
func disableSwipe(notification: NSNotification){
    self.dataSource = nil
}

func enableSwipe(notification: NSNotification){
    self.dataSource = self
}

在您的子视图控制器中,您可以通过关注post通知。

NSNotificationCenter.defaultCenter().postNotificationName("enableSwipe", object: nil)

NSNotificationCenter.defaultCenter().postNotificationName("disableSwipe", object: nil)

您可以使用此扩展程序:

extension UIPageViewController {
     var isPagingEnabled: Bool {
        get {
           var isEnabled: Bool = true
           for view in view.subviews {
               if let subView = view as? UIScrollView {
                   isEnabled = subView.isScrollEnabled
               }
           }
           return isEnabled
       }
       set {
           for view in view.subviews {
               if let subView = view as? UIScrollView {
                   subView.isScrollEnabled = newValue
               }
           }
       }
   }    
}

并调用这个:

pageCtrl.isPagingEnabled = false