如何在SwiftUI中防止键盘推动视图?

9
我是 SwiftUI 编程的新手,我已经创建了一个视图,但是一旦用户点击文本字段,键盘就会出现,整个视图也会向上推动,请问如何解决这个问题?

不是指我创建了一个注册页面,一旦我点击文本框,它就会将视图向上推。 - jaz01
我刚在网上看到,解决这个问题的唯一方法是包含一个滚动视图,因为ignoresSafeArea与VStack不兼容。 - jaz01
你能帮助 @Andrew 吗? - jaz01
@jnpdx 你能帮我一下吗? - jaz01
@jaz01 正如其他人在SO上指出的那样,这个问题之前已经有答案了。如果现有的解决方案对你不起作用,你需要展示你尝试过的代码,并解释为什么你的情况不同以及现有的解决方案为何无法工作。 - jnpdx
@jaz01 你找到解决方案了吗?我也遇到了同样的问题。 - Beena
1个回答

24

我相信你可以使用.ignoresSafeArea(.keyboard)

我在XCode 12.4和模拟器iOS 14.4上测试了这段代码

struct ContentView: View {
  var body: some View {
      VStack {
        Spacer()
        Group {
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
        }
        HStack{
          Spacer()
          TextField("INPUT", text: .constant("HERE IS INPUT"))
          Spacer()
        }
        Group {
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
          Text("Content")
        }
        Spacer()
      }
      .ignoresSafeArea(.keyboard)
  }
}

但是,真的需要使用GeometryReader{}吗?@MaksymilianTomczyk - jaz01
好的,GeometryReader是从另一个实验中剩下的。正在编辑答案以删除GeometryReader。 - Maksymilian Tomczyk
1
但我试过了,对我没有用。@Maksymilian Tomczyk - jaz01
我尝试在空项目中不使用GeometryReader运行它,它可以正常工作。你的内容是否被包装在其他容器中? - Maksymilian Tomczyk
我会更新问题并附上我的代码,供您查看。 - jaz01
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接