【问题标题】:Disable UIPageViewController Swipe - Swift禁用 UIPageViewController 滑动 - Swift
【发布时间】:2016-12-07 05:58:19
【问题描述】:

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

感谢您的帮助..谢谢

【问题讨论】:

  • 当 child1 出现时。 userInteraction = false

标签: swift xcode uipageviewcontroller


【解决方案1】:

你可以使用这个扩展:

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

【讨论】:

  • 有用的扩展
【解决方案2】:

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

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
}

在您的子视图控制器中,您可以通过以下方式发布通知。

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

或

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

【讨论】:

  • 嗨,它适用于滑动,但它也会阻止上下滚动,因为我的孩子有 uitableview。如何使表格视图也保持滚动?谢谢
  • 请检查您的子视图的“用户交互已启用”,并在您的 tableView 中,确保选中 Scrolling Enabled 复选框
  • 事实证明,我检查偏移量的逻辑是错误的。所以我接受了答案。谢谢!
  • 非常感谢,这么干净的答案,+1 :)
  • 这真的是我需要的!我不知道你可以用通知中心做那种事情!谢谢人
猜你喜欢
  • 2015-07-24
  • 1970-01-01
  • 2014-04-01
  • 2017-12-11
  • 2018-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多