iOS16有一个问题,当使用SwiftUI并关闭页面时,键盘会破坏布局。

11
在iOS 16中,当表单(sheet)关闭时,里面的键盘会消失(这是正常的),但布局(layout)没有更新。我发现只有一个同样的问题,我想知道是否有人找到了暂时的解决办法,直到Apple修复这个bug。 复现代码:
struct Test: View {
    
    @State var isPresented: Bool = false
    @State var text: String = ""
    
    var body: some View {
        VStack{
            Button {
                isPresented.toggle()
            } label: {
                Text("PRESENT")
            }
        }
        .sheet(isPresented: $isPresented) {
            ZStack {
                Color.red
                VStack{
                    TextField("Test", text: $text)
                        .frame(height: 50, alignment: .center)
                    Spacer()
                    Rectangle()
                        .fill(Color.blue)
                        .frame(width:300, height: 50)
                }
            }
        }
    }
}

Video: https://vimeo.com/758845068

1个回答

6
.ignoresSafeArea() 可以解决这个问题,但是会导致键盘覆盖 UI,而无法滚动查看所有元素。
我使用了从这个答案中获取的.adaptsToKeyboard() 自定义修饰符。
然后按照特定顺序在需要的地方使用它。
VStack {...}
       .adaptsToKeyboard()
       .ignoresSafeArea()

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