为什么 Text onTapGesture 不适用于 SwiftUI 中的加宽框架?
Why is Text onTapGesture not working for widened frame in SwiftUI?
我的测试文件无法正常工作。
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()
}
}
当我点击一个数字时,前景色按预期变化。但是,我希望能够点击 Text("\(num)")
的左侧和右侧区域,因此我扩展了框架修改器以进行测试。但是,只有当我直接点击数字或文本时,颜色才会改变。
如何点击数字左侧或右侧的 space 并让它改变颜色而不是什么都不做?
系统将视图的“不可见”(即没有可见的绘制内容)部分视为无响应,除非您对其设置 contentShape
。
//...
.frame(width: 400)
.contentShape(Rectangle())
//...
我的测试文件无法正常工作。
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()
}
}
当我点击一个数字时,前景色按预期变化。但是,我希望能够点击 Text("\(num)")
的左侧和右侧区域,因此我扩展了框架修改器以进行测试。但是,只有当我直接点击数字或文本时,颜色才会改变。
如何点击数字左侧或右侧的 space 并让它改变颜色而不是什么都不做?
系统将视图的“不可见”(即没有可见的绘制内容)部分视为无响应,除非您对其设置 contentShape
。
//...
.frame(width: 400)
.contentShape(Rectangle())
//...