metatext/View Controllers/SwipeableNavigationController.swift

30 lines
1.1 KiB
Swift
Raw Normal View History

// Copyright © 2022 Metabolist. All rights reserved.
import UIKit
// ref: https://stackoverflow.com/a/60598558/3797903
class SwipeableNavigationController: UINavigationController {
private lazy var fullWidthBackGestureRecognizer = UIPanGestureRecognizer()
2022-11-22 04:46:18 +00:00
override func viewDidLoad() {
super.viewDidLoad()
setupFullWidthBackGesture()
}
2022-11-22 04:46:18 +00:00
private func setupFullWidthBackGesture() {
2022-11-22 04:46:18 +00:00
guard let targets = interactivePopGestureRecognizer?.value(forKey: "targets") else { return }
// have fullWidthBackGestureRecognizer execute the same handler as interactivePopGestureRecognizer
fullWidthBackGestureRecognizer.setValue(targets, forKey: "targets")
fullWidthBackGestureRecognizer.delegate = self
2022-11-22 04:46:18 +00:00
view.addGestureRecognizer(fullWidthBackGestureRecognizer)
}
}
extension SwipeableNavigationController: UIGestureRecognizerDelegate {
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
interactivePopGestureRecognizer?.isEnabled == true && viewControllers.count > 1
}
}