如何防止键盘在 SwiftUI 中向上推视图? [复制]

Posted

技术标签:

【中文标题】如何防止键盘在 SwiftUI 中向上推视图? [复制]【英文标题】:How to prevent keyboard from pushing up the view in SwiftUI? [duplicate] 【发布时间】:2021-04-15 09:16:05 【问题描述】:

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

【问题讨论】:

不,从某种意义上说,我创建了一个注册页面,一旦我点击一个文本字段,它就会将视图向上推 我刚刚在网上看到,解决这个问题的唯一方法是包含滚动视图,因为 ignoresSafeArea 不适用于 VStack 你能帮忙@Andrew @jnpdx 你能帮我吗 @jaz01 正如已经指出的那样,这个问题之前已经在 SO 上得到了回答。如果现有解决方案不适合您,您需要展示您尝试过的代码并解释您的情况为何不同以及现有解决方案如何无法正常工作。 【参考方案1】:

相信你可以使用.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 好点,GeometryReader 是另一个实验遗留下来的。编辑答案以删除 GeometryReader。 但我厌倦了,它对我不起作用。 @Maksymilian Tomczyk 我尝试在没有 GeometryReader 的空项目上运行它并且它有效。您的内容是否包装在其他容器中? 我会用我的代码更新问题给你看看。

以上是关于如何防止键盘在 SwiftUI 中向上推视图? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何防止键盘在我的布局中向上推某个视图? [复制]

如何防止在android中打开键盘时反应本机模式向上移动?

如何使用 CSS 或 JS 防止 iOS 键盘将视图推离屏幕

使用 phonegap 防止键盘在 iOS 应用程序中向上推 webview

在 iPad 上,如何防止模态视图在键盘呈现时向上移动?

Swift 防止 TabBar 在键盘处于活动状态时向上移动