首页 > 解决方案 > 在 SwiftUI 中隐藏导航栏而不会丢失向后滑动手势

问题描述

在 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)
    }
}

非常感谢任何建议或解决方案

标签: swiftswiftui

解决方案


这应该通过扩展来工作UINavigationController

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

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

推荐阅读