问题描述
我有以下代码。顶部的两个大按钮和下方带有许多按钮的 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 版
解决方法
您可以使用 .contentShape()
控制视图的可点击区域。
在您的情况下,您可以在 .contentShape(Rectangle())
之后添加 HStack
。