微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI:在选项卡视图中显示键盘会在第二个选项卡视图下方添加一个奇怪的空间

如何解决SwiftUI:在选项卡视图中显示键盘会在第二个选项卡视图下方添加一个奇怪的空间

这听起来像是 SwiftUI 的 NavigationViewTabView 中的一个错误,当我有一个 TabView 和(比如说)2 个标签时,第一个标签一个 TextField,而第二个选项卡有一个 NavigationView,请按照以下步骤生成错误

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

-注意1:如果您执行以下任何操作,则不会重现该错误

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

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

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

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

截图:

enter image description here

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。