SwiftUI:在用户滑动以关闭时显示警报

时间:2020-07-22 02:26:24

标签: ios swift swiftui

只是想知道-从2020年开始-SwiftUI软件包中是否有内置方法可以增强Sheets上的“轻扫以消除”手势。

我在这里曾问过这个问题:Prevent dismissal of modal view controller in SwiftUI ---不起作用(至少不再起作用),并且Xcode不建议对已赞成的答案中提供的代码进行修复/迁移。 / p>

也去过其他一些帖子,但是他们要么指向上面的链接答案,要么建议第三者套餐。 (我试图避免这种情况,因为SwiftUI迅速发展,并且更好地坚持了Apple现在提供的功能。)

总而言之,有没有办法---

  1. 向下滑动可防止用户关闭Sheet(而不是FullScreenCover
  2. (可选)显示警报或执行其他任何操作,例如,当您访问Calendar.app时,创建一个事件,输入几个字母,然后尝试将其关闭
  3. ...全部都没有使用第三方库吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个用于关闭工作表的本机SwiftUI方法的演示-只需提供具有拖动手势的背景即可。

通过Xcode 12 / iOS 14测试

demo

struct DemoSheetNoClose: View {
    @State private var showSheet = false
    var body: some View {
        Button("Show Sheet") { self.showSheet.toggle() }
            .sheet(isPresented: $showSheet) {
                ZStack {
                    Rectangle().fill(Color.red).border(Color.black) // << just demo
                        .edgesIgnoringSafeArea(.all)
                        .highPriorityGesture(DragGesture(minimumDistance: 0).onEnded { value in
                            // handle value here to, for example, show alert
                        })

                    Text("Content Here!")
                }
            }
    }
}

注意:它可以用作视图包装,修饰符等。