InteractiveDismissHack

InteractiveDismissHack 允许您在包含嵌套在其他滚动视图中的滚动视图的模态屏幕上启用交互式关闭。

在以下示例中,此函数将使您可以通过在带有页面样式的 TabView 内的 ScrollView 上向下滑动来关闭模态视图。

import SwiftUI
import InteractiveDismissHack

struct ContentView: View {
    var body: some View {
        TabView {
            ScrollView {
                // ...
            }
            .nestedInteractiveDismissEnabled()
        }
        .tabViewStyle(.page)
    }
}

此外,您可以通过 environment 访问交互式关闭手势识别器。

import SwiftUI
import InteractiveDismissHack

struct ParentView: View {
    var body: some View {
        ZStack {
            // ...
        }
        .sheet(isPresented: ...) {
            ChildView()
                .extractInteractiveDismissGesture() // Make gesture available
        }
    }
}

struct ChildView: View {
    // Access gesture
    @Environment(\.interactiveDismissGesture) private var interactiveDismissGesture
    
    var body: some View {
        // ...
    }
}

重要提示

此库修改了 UIScrollView 的内部行为,可能会在新版本的 iOS 中失效。 使用风险自负。

安装

let package = Package(
    dependencies: [
        .package(url: "https://github.com/Tunous/InteractiveDismissHack", from: "0.1.0"),
    ],
    targets: [
        .target(name: <#Target Name#>, dependencies: [
            .product(name: "InteractiveDismissHack", package: "InteractiveDismissHack"),
        ]),
    ]
)