Ios 按钮点击触发,尽管点击下面的按钮
我有以下代码。顶部有两个大按钮,下面有许多按钮的滚动视图:Ios 按钮点击触发,尽管点击下面的按钮,ios,swiftui,swiftui-scrollview,Ios,Swiftui,Swiftui Scrollview,我有以下代码。顶部有两个大按钮,下面有许多按钮的滚动视图: struct ContentView: View { var body: some View { VStack (spacing: 0) { HStack (spacing: 0) { Button(action: {}, label: {Image("button_background")}) Butto
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()
控制视图的可点击区域
在您的情况下,您可以在
HStack
之后添加.contentShape(Rectangle())
,我将您的代码复制粘贴到clean SwiftUI项目中,并且一切正常,您单击A,它触发A,您单击大按钮,它触发大按钮。问题是什么?我也在使用上面粘贴的代码。这取决于我点击的位置。如果我点击“A”的下半部分,它会按预期工作,但如果我点击“上半部分”,它会触发大按钮。如果你点击尽可能高的“A”,它对你有用吗?XCode版本12.3