禁用 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
在我的项目中,我使用 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