一尘不染

隐藏导航栏而不会丢失SwiftUI中的向后滑动手势

swift

在SwiftUI中,每当导航栏被隐藏时,向后滑动手势也将被禁用。

在保留SwiftUI中的向后滑动手势的同时,有什么方法可以隐藏导航栏?我已经有一个自定义的“后退”按钮,但仍然需要该手势。

我已经看到了UIKit的一些解决方案,但仍然不知道如何在SwiftUI中进行操作

这是尝试代码的代码:

import SwiftUI

struct RootView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: SecondView()) {
                Text("Go to second view")
            }
        }
    }
}

struct SecondView: View {
    var body: some View{
        Text("As you can see, swipe to go back will not work")
        .navigationBarTitle("")
        .navigationBarHidden(true)
    }
}

任何建议或解决方案,不胜感激


阅读 597

收藏
2020-07-07

共1个答案

一尘不染

这应该通过扩展来起作用UINavigationController

extension UINavigationController: UIGestureRecognizerDelegate {
    override open func viewDidLoad() {
        super.viewDidLoad()
        interactivePopGestureRecognizer?.delegate = self
    }

    public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
        return viewControllers.count > 1
    }
}
2020-07-07