2

我有以下代码。顶部的两个大按钮和一个带有许多按钮的 ScrollView:

struct ContentView: View {
    var body: some View {
        VStack (spacing: 0) {
            HStack (spacing: 0) {
                Button(action: {}, label: {Image("button_background")})
                Button(action: {}, label: {Image("button_background")})
            }
            ScrollView {
                LazyVGrid(columns: [GridItem(.adaptive(minimum: 64))], spacing: 0) {
                    ForEach(1...4, id: \.self) { number in
                        Button(action: {}, label: {
                            ZStack {
                                Color(.gray)
                                Text("A").foregroundColor(.white)
                            }
                        })
                    }
                }
            }
        }
    }
}

但是,当我单击 ScrollView 第一行中的一个按钮时,会触发上面 HStack 中的按钮。例如看下面的照片。我单击“A”(黑点,我无法显示光标)但上面的大按钮被触发(并变为灰色)。我该如何解决?

XCode 版本 12.3

例子

4

1 回答 1

2

您可以使用 控制视图的可点击区域.contentShape()

在您的情况下,您可以.contentShape(Rectangle())HStack.

于 2021-02-14T12:06:14.270 回答