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)")
          }
    }
}