fix: swipe back

This commit is contained in:
Tienson Qin
2025-11-17 09:09:59 +08:00
parent 499f4acd19
commit 42620fe276

View File

@@ -8,7 +8,7 @@
import UIKit
class NativePageViewController: UIViewController {
class NativePageViewController: UIViewController, UIGestureRecognizerDelegate {
let targetPath: String
let push: Bool
@@ -29,7 +29,37 @@ class NativePageViewController: UIViewController {
SharedWebViewController.instance.attach(to: self)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navigationController?.interactivePopGestureRecognizer?.isEnabled = true
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
guard let nav = navigationController,
let popGesture = nav.interactivePopGestureRecognizer else { return }
popGesture.delegate = self
let isSidebar = (targetPath == "/left-sidebar")
popGesture.isEnabled = !isSidebar && nav.viewControllers.count > 1
}
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
guard
let nav = navigationController,
gestureRecognizer === nav.interactivePopGestureRecognizer
else { return true }
if targetPath == "/left-sidebar" {
return false
}
return nav.viewControllers.count > 1
}
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
guard let nav = navigationController else { return false }
return gestureRecognizer === nav.interactivePopGestureRecognizer
}
}