为什么 Text onTapGesture 不适用于 SwiftUI 中的加宽框架?

Tom*_*mas 2 swiftui swiftui-foreach swiftui-ontapgesture

我的这个测试文件没有按我预期的方式工作。

import SwiftUI

struct SwiftUIView: View {
    
    @State var boolTest = false
    
    var nums = ["1","2","3","4","5","6","7"]
    
    var body: some View {
        VStack {
            ForEach(nums, id: \.self) { num in
                Text("\(num)")
                    .frame(width: 400)
                    .font(.system(size: 70))
                    .foregroundColor(boolTest ? .red : .green)
                    .onTapGesture {
                        boolTest.toggle()
                    }
            }

        }
    }
}

struct SwiftUIView_Previews: PreviewProvider {
    static var previews: some View {
        SwiftUIView()
    }
}
Run Code Online (Sandbox Code Playgroud)

当我点击数字时,前景色会按预期发生变化。但是,我希望能够点击左侧和右侧的区域,Text("\(num)")因此我扩展了框架修改器来进行测试。然而,只有当我直接点击数字或文本时,颜色才会改变。

如何点击数字左侧或右侧的空间并使其改变颜色而不是不执行任何操作?

jn_*_*pdx 5

系统将视图的“不可见”(即没有可见的绘制内容)部分视为无响应,除非您contentShape对其设置了 a 。

//...
.frame(width: 400)
.contentShape(Rectangle())
//...
Run Code Online (Sandbox Code Playgroud)