SwiftUI:隐藏的 NavigationBar 块 UI

SwiftUI: Hidden NavigationBar blocks UI

我正在使用 NavigationView 在视图之间导航。因为我不想使用 NavigationBar,所以我将其隐藏。不幸的是,NavigationBar 所在的区域(它是隐藏的)仍然挡住了 UI。无法点击那里的按钮。

我该如何解决这个问题?

// First View
struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack {
                Spacer()
                
                Text("Title")
                
                Spacer()
                
                NavigationLink(destination: View2()) {
                    Text("Next")
                }
                .navigationBarTitle("", displayMode: .inline)
                .navigationBarBackButtonHidden(true)
                .navigationBarHidden(true)
                
                Spacer()
            }
        }
    }
}

// Second View: Here the button cannot be tapped
struct View2: View {
    var body: some View {
        NavigationView {
            VStack {
                Button(action: {
                    print("this button doesn't work")
                }, label: {
                    Text("Do something")
                })
                Spacer()
            }
            .padding(.top, 50)
            .edgesIgnoringSafeArea(.all)
        }
        .navigationBarTitle("", displayMode: .inline)
        .navigationBarBackButtonHidden(true)
        .navigationBarHidden(true)
    }
}

问题是由于使用了第二个 NavigationView - 这是错误的,在这种情况下应该只有一个管理导航堆栈的根导航视图。

这里是固定视图(子一)

struct View2: View {
    var body: some View {
        VStack {
            Button(action: {
                print("this button doesn't work")
            }, label: {
                Text("Do something")
            })
            Spacer()
        }
        .padding(.top, 50)
        .edgesIgnoringSafeArea(.all)
        .navigationBarBackButtonHidden(true)
        .navigationBarHidden(true)
    }
}

测试 Xcode 13.2 / iOS 15.2

注意:由于您隐藏了导航,但您也不需要模式修饰符,因此删除了 .navigationBarTitle("", displayMode: .inline)。仅供参考。