在使用SwiftUI时,我注意到一个非常不寻常的行为。在iOS 14上,当在模式屏幕上显示键盘时,父视图也会受到挤压。为了显示我的意思,我做了一个简短的演示者视图和一个简短的gif来显示问题。您可以找到here。
struct SqueezTestView: View {
@State var isModalPresented = false
@State var text = ""
@State var colors: [Color] = [.red, .green, .blue, .orange, .pink, .purple, .yellow]
var body: some View {
NavigationView {
VStack {
ForEach(0..<colors.count) { index in
colors[index]
.animation(.linear(duration: 1))
}
}
.navigationBarTitle("Squeez")
.navigationBarItems(leading: Button("Shuffel") { colors.shuffle() }, trailing: Button("Modal") { isModalPresented = true })
.sheet(isPresented: $isModalPresented) {
NavigationView {
VStack {
TextField("Test", text: $text, onCommit: {isModalPresented = false})
.padding()
Spacer()
}
.navigationBarTitle("Modal", displayMode: .inline)
.navigationBarItems(trailing: Button("Done") { isModalPresented = false })
}
}
}
}
}
我希望只压缩模式视图,而父视图保持不变。在这种情况下,每次在键盘可见时我关闭模态时,父视图都会获得动画效果。我有什么想念的吗?或者对此问题有任何已知的解决方法?