SwiftUI tapGesture 超级贪心吗?
Is the SwiftUI tapGesture super greedy?
Swift5,iOS13
如果我将第二个手势更改为长按,但将它们都保留为点击并且它从不显示红色框,则此代码有效?我要疯了吗?
import SwiftUI
struct SwiftUIViewQ: View {
@State var swap: Bool = false
var body: some View {
VStack {
if swap {
SquareView(fillColor: Color.red)
.onTapGesture {
self.swap = false
}
} else {
SquareView(fillColor: Color.blue)
.onTapGesture {
self.swap = true
}
}
}
}
}
struct SquareView: View {
@State var fillColor: Color
var body: some View {
Rectangle()
.fill(fillColor)
.frame(width: 128, height: 128)
.onAppear {
print("fillColor \(self.fillColor)")
}
}
}
奇怪的是,如果我在第一个视图中添加一个 onAppear,它会起作用...如果我在第二个视图中添加一个 onAppear,它会再次中断...
var fillColor 不需要@State,只需删除它即可正常工作
struct SquareView: View {
var fillColor: Color
var body: some View {
Rectangle()
.fill(fillColor)
.frame(width: 128, height: 128)
.onAppear {
print("fillColor \(self.fillColor)")
}
}
}
Swift5,iOS13
如果我将第二个手势更改为长按,但将它们都保留为点击并且它从不显示红色框,则此代码有效?我要疯了吗?
import SwiftUI
struct SwiftUIViewQ: View {
@State var swap: Bool = false
var body: some View {
VStack {
if swap {
SquareView(fillColor: Color.red)
.onTapGesture {
self.swap = false
}
} else {
SquareView(fillColor: Color.blue)
.onTapGesture {
self.swap = true
}
}
}
}
}
struct SquareView: View {
@State var fillColor: Color
var body: some View {
Rectangle()
.fill(fillColor)
.frame(width: 128, height: 128)
.onAppear {
print("fillColor \(self.fillColor)")
}
}
}
奇怪的是,如果我在第一个视图中添加一个 onAppear,它会起作用...如果我在第二个视图中添加一个 onAppear,它会再次中断...
var fillColor 不需要@State,只需删除它即可正常工作
struct SquareView: View {
var fillColor: Color
var body: some View {
Rectangle()
.fill(fillColor)
.frame(width: 128, height: 128)
.onAppear {
print("fillColor \(self.fillColor)")
}
}
}