在 Mac Catalyst 上关闭“.sheet”的手势

An *_*Hoa 6 ios swift swiftui mac-catalyst

在 SwiftUI 上使用修改器时,我得到的行为.sheet是,在 Mac(Catalyst)上使用向下滑动手势无法关闭显示的工作表,这是预期的,因为…Mac 不配备触摸屏。这导致必须添加许多#if targetEnvironment(macCatalyst) ... #endif来添加按钮来关闭工作表:

struct ContentView: View {
    @State private var showSheet = false

    var body: some View {
        VStack {
            Button("Show dialog") {
                showSheet = true
            }
        }.sheet(isPresented: $showSheet) {
            VStack {
                Text("Dialog").font(.title)
#if targetEnvironment(macCatalyst)
                Button("Close", action: { showSheet = false })
#endif
                Spacer()
            }.padding(10)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有更好的解决方案吗?