SwiftUI:在用户滑动以关闭时显示警报
Posted
技术标签:
【中文标题】SwiftUI:在用户滑动以关闭时显示警报【英文标题】:SwiftUI: Present alert on user swiping to dismiss 【发布时间】:2020-07-22 02:26:24 【问题描述】:只是想知道 --- 截至 2020 年 --- SwiftUI 包中是否有内置方式来增强表格上的“滑动关闭”手势。
我在这里遇到过这个问题:Prevent dismissal of modal view controller in SwiftUI --- 不起作用(至少不再起作用)并且 Xcode 不建议对投票答案中提供的代码进行修复/迁移。
也去过其他一些帖子,但他们要么指向上面的链接答案,要么建议第 3 方包。 (我试图避免这些,因为 SwiftUI 正在迅速发展,并且更好地坚持 Apple 目前官方提供的内容。)
总之,有没有办法---
-
防止用户通过向下滑动关闭
Sheet
(不是FullScreenCover
)
可选择显示提醒或执行任何其他操作,例如在您转到 Calendar.app 时,创建一个事件,输入几个字母并尝试将其关闭
...全部不使用 3rd 方库?
谢谢。
【问题讨论】:
【参考方案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!")
注意:可以做成view wrapper、modifier等。
【讨论】:
感谢您提供的解决方法 — 并不完美,但确实不错!当用户在 iPad 上点击工作表之外时,仍然可能无法正常工作......以上是关于SwiftUI:在用户滑动以关闭时显示警报的主要内容,如果未能解决你的问题,请参考以下文章
将 SwiftUI 警报或操作表绑定到值类型模型属性的可选性(当属性为 nil 时显示视图)的好方法是啥?