實例方法
interactive
interactiveDismissDisabled(_:)
有條件地阻止彈出框或工作表的交互解除。
聲明
func interactiveDismissDisabled(_ isDisabled: Bool = true) -> some View
參數
isDisabled
一個布爾值,指示在工作表或彈出窗口中顯示時是否防止包含視圖層次結構的非編程解除。
詳述
用戶可以使用內置手勢關閉某些類型的演示文稿。特別是,用戶可以通過向下拖動工作表來關閉工作表,或者通過在呈現的視圖之外單擊或輕敲來關閉工作表。使用interactiveDismissDisabled(_:)
修飾符有條件地防止這種解雇。您通常這樣做是為了防止用戶在提供所需數據或完成所需操作之前關閉演示文稿。
例如,假設您有一個視圖顯示用戶在繼續之前必須確認的許可協議:
struct TermsOfService: View {
@Binding var areTermsAccepted: Bool
@Environment(\.dismiss) private var dismiss
var body: some View {
Form {
Text("License Agreement")
.font(.title)
Text("Terms and conditions go here.")
Button("Accept") {
areTermsAccepted = true
dismiss()
}
}
}
}
如果您在工作表中顯示此視圖,用戶可以通過點擊按鈕(從其 action
閉包中調用 EnvironmentValues/dismiss
)或向下拖動工作表來關閉它。為確保用戶通過點擊按鈕接受條款,禁用交互式解雇,以areTermsAccepted
屬性為條件:
struct ContentView: View {
@State private var isSheetPresented = false
@State private var areTermsAccepted = false
var body: some View {
Button("Use Service") {
isSheetPresented = true
}
.sheet(isPresented: $isSheetPresented) {
TermsOfService()
.interactiveDismissDisabled(!areTermsAccepted)
}
}
}
您可以將修改器應用於工作表視圖層次結構中的任何視圖,包括工作表的頂級視圖,如示例所示,或任何子視圖,如 Form
或 Accept Button
。
修飾符對編程解除沒有影響,您可以通過更新控製表示的 Binding
或調用環境的 EnvironmentValues/dismiss
操作來調用它。在 macOS 上,禁用彈出框中的交互式解除會使彈出框非瞬態。
可用版本
iOS 15.0+, iPadOS 15.0+, macOS 12.0+, Mac Catalyst 15.0+, tvOS 15.0+, watchOS 8.0+
相關用法
- Swift Optional init(nilLiteral:)用法及代碼示例
- Swift Optional imageScale(_:)用法及代碼示例
- Swift Optional symbolVariant(_:)用法及代碼示例
- Swift Optional popover(isPresented:attachmentAnchor:arrowEdge:content:)用法及代碼示例
- Swift Optional mask(alignment:_:)用法及代碼示例
- Swift Optional listSectionSeparatorTint(_:edges:)用法及代碼示例
- Swift Optional badge(_:)用法及代碼示例
- Swift Optional fullScreenCover(isPresented:onDismiss:content:)用法及代碼示例
- Swift Optional keyboardType(_:)用法及代碼示例
- Swift Optional clipShape(_:style:)用法及代碼示例
- Swift Optional preferredColorScheme(_:)用法及代碼示例
- Swift Optional background(_:ignoresSafeAreaEdges:)用法及代碼示例
- Swift Optional saturation(_:)用法及代碼示例
- Swift Optional focusSection()用法及代碼示例
- Swift Optional overlay(alignment:content:)用法及代碼示例
- Swift Optional colorMultiply(_:)用法及代碼示例
- Swift Optional confirmationDialog(_:isPresented:titleVisibility:presenting:actions:message:)用法及代碼示例
- Swift Optional offset(_:)用法及代碼示例
- Swift Optional focused(_:equals:)用法及代碼示例
- Swift Optional hidden()用法及代碼示例
- Swift Optional previewDevice(_:)用法及代碼示例
- Swift Optional keyboardShortcut(_:modifiers:localization:)用法及代碼示例
- Swift Optional accessibilityAction(named:_:)用法及代碼示例
- Swift Optional textSelection(_:)用法及代碼示例
- Swift Optional pageCommand(value:in:step:)用法及代碼示例
注:本文由純淨天空篩選整理自apple.com大神的英文原創作品 Optional interactiveDismissDisabled(_:)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。