尽管单击下面的按钮,但仍会触发按钮单击

问题描述

我有以下代码。顶部的两个大按钮和下方带有许多按钮的 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 版

example

解决方法

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

在您的情况下,您可以在 .contentShape(Rectangle()) 之后添加 HStack

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...