swift - 当模态显示键盘时,SwiftUI会挤压父视图
问题描述
在使用 SwiftUI 时,我注意到一个非常不寻常的行为。在 iOS 14 上,当在模式屏幕上显示键盘时,父视图也会被挤压。为了说明我的意思,我制作了一个简短的演示视图和一个显示问题的简短 gif。你可以在这里找到。
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 })
}
}
}
}
}
我预计只有模态视图被挤压并且父视图保持不变。在这种情况下,每次我在键盘可见时关闭模式时,父视图都会被动画化。有什么我错过的或者有任何已知的解决这个问题的方法吗?
解决方案
推荐阅读
- sql - 如何生成 2 级循环
- arrays - 检查二维数组是升序还是降序排序
- c++ - 解析文件以将变量分配给结构。C++
- hibernate - 如何从java中查询/调用hibernate的@JoinTable注解
- algorithm - 2D 网格形状周围的周长
- vue.js - 如何从托管的 html 文件(无 webpack 等)加载 Vue 模板
- python-3.x - 如何生成 15 个不同的数字并将这些数字分配给变量
- ssl - 根 CA 证书可以位于证书路径的中间吗?
- sql - 在 SQL Server 中从 JSON 创建一个 url
- android - 从片段中隐藏 NavigationDrawer 和 ActionBar