首页 > 解决方案 > 如何防止 ScrollView 在 SwiftUI 中捕获超出其边界的点击?

问题描述

这是我可以运行的完整代码:

struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack(spacing: 0) {
                Rectangle().frame(height: 100)
                ScrollView(.vertical, showsIndicators: false) {
                    ForEach((0..<1000)) { index in
                        NavigationLink("Click on this line - \(index)", destination: Text("CONGRATS!! ITS \(index)!!!"))
                    }
                }
            }
        }
    }
}

这是一个简单的 VStack,嵌入了 2 个视图 -> ARectangleScrollView

错误:滚动滚动视图。如果您现在点击矩形,滚动视图的行将被点击。

当它们在 VStack 中分离时,这怎么可能?我该如何解决这个问题?

标签: swiftswiftui

解决方案


解决来自@SwiftUILab的修复

struct ContentView: View {
    var body: some View {
        NavigationView {
            VStack(spacing: 0) {
                Rectangle().frame(height: 100)
                ScrollView(.vertical, showsIndicators: false) {
                    ForEach((0..<1000)) { index in
                        NavigationLink("Click on this line - \(index)", destination: Text("CONGRATS!! ITS \(index)!!!"))
                    }
                }.contentShape(Rectangle())
            }
        }
    }
}

推荐阅读