只是想知道-从2020年开始-SwiftUI软件包中是否有内置方法可以增强Sheets上的“轻扫以消除”手势。
我在这里曾问过这个问题:Prevent dismissal of modal view controller in SwiftUI ---不起作用(至少不再起作用),并且Xcode不建议对已赞成的答案中提供的代码进行修复/迁移。 / p>
也去过其他一些帖子,但是他们要么指向上面的链接答案,要么建议第三者套餐。 (我试图避免这种情况,因为SwiftUI迅速发展,并且更好地坚持了Apple现在提供的功能。)
总而言之,有没有办法---
Sheet
(而不是FullScreenCover
)谢谢。
答案 0 :(得分:1)
这是一个用于关闭工作表的本机SwiftUI方法的演示-只需提供具有拖动手势的背景即可。
通过Xcode 12 / iOS 14测试
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!")
}
}
}
}
注意:它可以用作视图包装,修饰符等。