diff --git a/Sources/RDEpubReaderView/EPUBUI/RDEPUBReaderController.swift b/Sources/RDEpubReaderView/EPUBUI/RDEPUBReaderController.swift index b50a702..cffc4d5 100644 --- a/Sources/RDEpubReaderView/EPUBUI/RDEPUBReaderController.swift +++ b/Sources/RDEpubReaderView/EPUBUI/RDEPUBReaderController.swift @@ -157,6 +157,10 @@ public final class RDEPUBReaderController: UIViewController { /// 阅读器进入前宿主导航栏的真实状态。详情页使用自定义导航栏时系统栏原本 /// 就是隐藏的,退出阅读器必须恢复该状态,不能无条件显示系统导航栏。 private var navigationBarHiddenBeforeReader: Bool? + /// 阅读器进入前宿主侧滑返回手势的真实状态。阅读器自己接管横向翻页, + /// 期间必须关闭该手势;退出时按原值恢复,不能把宿主的配置改成阅读器的。 + private var interactivePopWasEnabledBeforeReader: Bool? + private weak var interactivePopDelegateBeforeReader: UIGestureRecognizerDelegate? private(set) var isSearchBarVisible = false @@ -287,9 +291,12 @@ public final class RDEPUBReaderController: UIViewController { if navigationBarHiddenBeforeReader == nil { navigationBarHiddenBeforeReader = navigationController?.isNavigationBarHidden } + if interactivePopWasEnabledBeforeReader == nil { + interactivePopWasEnabledBeforeReader = navigationController?.interactivePopGestureRecognizer?.isEnabled + interactivePopDelegateBeforeReader = navigationController?.interactivePopGestureRecognizer?.delegate + } navigationController?.setNavigationBarHidden(true, animated: animated) - navigationController?.interactivePopGestureRecognizer?.delegate = self - navigationController?.interactivePopGestureRecognizer?.isEnabled = true + navigationController?.interactivePopGestureRecognizer?.isEnabled = false } public override func viewWillDisappear(_ animated: Bool) { @@ -300,6 +307,10 @@ public final class RDEPUBReaderController: UIViewController { animated: animated ) } + if let interactivePopWasEnabledBeforeReader { + navigationController?.interactivePopGestureRecognizer?.delegate = interactivePopDelegateBeforeReader + navigationController?.interactivePopGestureRecognizer?.isEnabled = interactivePopWasEnabledBeforeReader + } } public override func viewDidAppear(_ animated: Bool) {