SwiftUI不会使用Xcode 12的键盘推送导航

时间:2020-09-16 12:29:25

标签: swiftui

我制作了一个简单的应用程序来说明问题。我有一个自定义标签视图,但是当我单击文本字段并打开键盘时,导航标签也被向上推。我希望导航不可见(就像人们对任何应用程序所期望的那样)。

此图说明了问题:

enter image description here

如果我使用本机TabView,则不会发生此问题,但是我想使用自定义标签。有人知道如何处理吗?在下面提供代码。

struct ContentView: View {
    @State var menu = 0
    
    var body: some View {
        VStack {
            
            VStack {
                if menu == 0 {
                    FirstPage()
                } else if menu == 1 {
                    Text("all is good")
                }
            }
            .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
            
            CustomTabs(menu: $menu)
        }
    }
}

struct CustomTabs: View {
    @Binding var menu: Int
    var body: some View {
        HStack {
            Spacer()
            Text("Nav1")
                .onTapGesture{
                    self.menu = 0
                }
            Spacer()
            Text("Nav2")
                .onTapGesture{
                    self.menu = 1
                }
            Spacer()
        }
        .padding()
        .background(Color(.red))
    }
}

struct FirstPage: View {
    @State var mood: String = ""
    
    var body: some View {
        VStack {
            Text("How are you?")
            TextField("answer textfield", text: $mood)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

可能的解决方案/解决方法是将CustomTabs嵌入到VStack的{​​{1}}中,即使在键盘出现时也可以将选项卡向下推,然后将其放入通过Spacer展现在您的视图前面。

ZStack

为简单起见,我只是决定将标签高度设置为70。更漂亮的解决方案是使用GeometryReader。