首页 > 解决方案 > SwiftUI:在选项卡视图中显示键盘在第二个选项卡视图下方添加了一个奇怪的空间

问题描述

这听起来是 SwiftUI 中的一个错误NavigationViewTabView当我有一个TabView(假设)2 个选项卡时,第一个选项卡有一个TextField,第二个选项卡有一个NavigationView,请按照以下步骤生成错误:

  1. 通过点击文本字段显示键盘。
  2. 按“返回”按钮隐藏键盘。
  3. 转到选项卡 2。
  4. 注意奇怪的底部在视图下方添加了空间,大约等于键盘的高度。

-注意1:如果您执行以下任何操作,则该错误将不会被复制:

  1. 应用程序启动后,打开选项卡 2,返回选项卡 1 并显示键盘。
  2. NavigationView从选项卡 2中删除
  3. 在选项卡 1 中再显示一次键盘

注意2:GeometryReader在选项卡 2 中使用黄色显示整个视图区域。

工作代码示例(只需复制粘贴即可尝试):

struct ContentView: View {
    var body: some View {
        TabView {
            View1()
                .tabItem { Text("View1") }
                .tag(1)
            
            View2()
                .tabItem { Text("View2") }
                .tag(2)
        }
    }
}

struct View1: View {
    @State private var myText = ""
    var body: some View {
        VStack {
            Text("this is view 1")
            TextField("Enter Value", text: $myText)
        }
    }
}

struct View2: View {
    var body: some View {
        NavigationView {
            GeometryReader { reader in
                Text("this is view 2")
                    .onAppear{
                        print("view 2 on appear")
                    }
            }
            .background(Color.yellow)
        }
    }
}

截屏:

在此处输入图像描述

有没有办法解决这个问题而不必删除NavigationView,我尝试了所有可能的解决方案,但找不到避免它的线索?

标签: swiftswiftuiswiftui-navigationviewswiftui-tabview

解决方案


推荐阅读