SwiftUI iOS14 - 禁用键盘回避

Tro*_*ano 16 keyboard swiftui ios14

有没有办法禁用 iOS14 上的本机键盘避免?

iOS13中没有键盘回避,所以我想实现我自己的,但是当我这样做时,iOS14上的本机键盘仍然处于活动状态,所以我的实现和本机键盘同时运行,这是我不希望的。

我的部署目标是iOS13,所以我需要一个同时适用于iOS13和iOS14的解决方案。

paw*_*222 25

if #available(iOS 14.0, *)如果您想调整 iOS 14 代码以便在 iOS 13 上编译,则可以使用。

以下是该答案的改编版本,适用于 iOS 13 和 iOS 14:

struct ContentView: View {
    @State var text: String = ""

    var body: some View {
        if #available(iOS 14.0, *) {
            VStack {
                content
            }
            .ignoresSafeArea(.keyboard, edges: .bottom)
        } else {
            VStack {
                content
            }
        }
    }

    @ViewBuilder
    var content: some View {
        Spacer()
        TextField("asd", text: self.$text)
            .textFieldStyle(RoundedBorderTextFieldStyle())
        Spacer()
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 也许对于像这样的简单视图(仅填充垫片)来说这是可行的。但在某些情况下,您可能有一个复杂的视图,具有自定义标题和许多文本/按钮/文本字段。在这种情况下,尽管使用了“.ignoreSafeArea”修饰符,视图仍然可能会被推高,因此解决方案是将视图嵌入到“GeometryReader”中,并将修饰符添加到其中而不是前者 (4认同)