我在SwiftUI中发现了一个奇怪而令人沮丧的行为。如果你在导航链接中从视图中呈现一个工作表,然后(快速有序地):
1.向下滑动以关闭工作表
1.向后滑动(从左边缘向右)以关闭导航视图
应用程序将在返回到根视图之前冻结。背景化应用程序并将其前景化将使其不粘滞。
你必须非常快地执行这些步骤。有变通方法吗?我希望两种手势都能工作,而不会相互干扰。
此代码将重现问题:
struct ContentView: View {
@State var showSheet = false
var body: some View {
NavigationView {
VStack {
NavigationLink("blah") {
VStack {
Button("Show Sheet") {
showSheet.toggle()
}
.sheet(isPresented: $showSheet, onDismiss: nil) {
Text("Sheet")
}
}
}
}
}
}
}
字符串
这是模拟器中的问题的GIF。首先显示问题,然后显示如果您在后台运行应用程序,它会自行解决。
的数据
编辑:2022年10月:此错误仍然存在于iOS 16中
编辑:2023年9月:此错误仍然存在于iOS 17中
1条答案
按热度按时间w8f9ii691#
我在这篇文章Common Pitfalls Caused by Delayed State Updates in SwiftUI中解释了这个问题的原因和解决方案
字符串