簡體   English   中英

SwiftUI:在用戶滑動關閉時顯示警報

[英]SwiftUI: Present alert on user swiping to dismiss

只是想知道 --- 截至 2020 年 --- SwiftUI package 中是否有內置方式來增強表格上的“滑動以關閉”手勢。

我在這里遇到過這個問題: 防止在 SwiftUI 中解除模態視圖 controller --- 不起作用(至少不再起作用),並且 Xcode 中的代碼提供的修復建議沒有建議修改的答案。

也去過其他一些帖子,但他們要么指向上面的鏈接答案,要么建議第 3 方包。 (我試圖避免這些,因為 SwiftUI 正在迅速發展,並且更好地堅持 Apple 目前官方提供的內容。)

總而言之,有沒有辦法——

  1. 防止用戶通過向下滑動來關閉工作Sheet (不是FullScreenCover
  2. 可以選擇顯示警報或執行任何其他操作,例如當您 go 訪問 Calendar.app 時,創建一個事件,輸入幾個字母並嘗試關閉它
  3. ... 全部不使用 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!")
                }
            }
    }
}

注意:它可以作為視圖包裝器、修改器等。

使用 UIKit 接口。

使用UIKit接口

現在是 2022 年和 iOS 16,下一個 SwiftUI 迭代將很快發布。

似乎@Asperi 的答案仍然是實現它的唯一方法。 我希望我錯了,現在有來自 Apple 的更精致的 API?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM