带有向后滑动手势的工作表关闭手势会导致应用程序冻结

gh1*_*man 7 ios swiftui

我在 SwiftUI 中发现了一种奇怪且令人沮丧的行为。如果您在导航链接的视图中呈现工作表,然后(快速且按顺序):

  1. 向下滑动以关闭工作表
  2. 向后滑动(从左边缘向右)以关闭导航视图

应用程序将在返回根视图之前冻结。将应用程序置于后台并置于前台将使其脱离。

您必须非常快地执行这些步骤。有解决方法吗?我希望这两个手势都能工作而不会互相干扰。

此代码将重现该问题:

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")
                        }
                    }
                }
            }
        }
    }
}

Run Code Online (Sandbox Code Playgroud)

这是模拟器中问题的 gif。首先显示问题,然后显示如果您将应用程序置于后台,它会自行解决。

在此输入图像描述

编辑:2022 年 10 月:此错误在 iOS 16 中仍然存在

编辑:2023 年 9 月:此错误在 iOS 17 中仍然存在

Dav*_*man 1

已确认此问题已在 iOS 17.2.1 (FB12402900) 上修复。