ios - SwiftUI:在用户滑动以关闭时显示警报
问题描述
只是想知道 --- 截至 2020 年 --- SwiftUI 包中是否有内置方式来增强表格上的“滑动以关闭”手势。
我在这里遇到过这个问题:防止在 SwiftUI 中解除模态视图控制器--- 不起作用(至少不再起作用)并且 Xcode 不建议对赞成答案中提供的代码进行修复/迁移。
也去过其他一些帖子,但他们要么指向上面的链接答案,要么建议第 3 方包。(我试图避免这些,因为 SwiftUI 正在迅速发展,并且更好地坚持 Apple 目前官方提供的内容。)
总而言之,有没有办法——
- 防止用户通过向下滑动来关闭 a
Sheet
(不是 a )FullScreenCover
- 可以选择显示警报或做任何其他事情,例如当您转到 Calendar.app 时,创建一个事件,输入几个字母并尝试将其关闭
- ... 全部不使用 3rd 方库?
谢谢。
解决方案
这是一个用于阻止工作表关闭的原生 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!")
}
}
}
}
注意:它可以作为视图包装器、修改器等。
推荐阅读
- unity3d - 当我尝试加载一个文件,但 AssetDataBase.GetDependencies() 返回文件夹时?
- rust - Rust 如何知道向量的生命周期取决于你推送给它的东西?
- sql - jpa 以相等方式加入不相关的列
- javascript - 我们可以知道用户最后一次截图或照片的时间是什么时候
- webrtc - RTCError:传输通道关闭(数据通道)-JANUS Webrtc 服务器
- ansible - 将 semodule 与 ansible 一起使用
- sql - 如何获得第一行或第二行
- laravel - 为不同类别显示不同的刀片形式
- visual-studio - Visual Studio Monokai 主题
- sql-server - 如何创建 MsSQL 过程以根据其他两个表过滤一个表?