SwiftUI:如何使透明的矩形(.fill(.clear))接收手势?

6
我想在我的图像上叠加几个Rectangle(),这些矩形应该能够响应手势(例如点击或拖动)。然而,我发现当我将矩形设置为透明时,它将停止接收手势。
Rectangle()
  .fill(.clear)
  .gesture(
    LongPressGesture()
      .onEnded { value in 
        // this isn't called when the rectangle fill is .clear
      }
  )

有没有一种方法让一个不可见的元素接收点击?我知道可以给它1%的不透明度,但那感觉很丑(而且是可见的hack)。

我不知道问这个是否合适,但为什么不直接在你的图像上使用.gesture呢?这更合理,而且你不必使用额外的矩形。 - Steven-Carrot
@tail 这是一个简化的例子。 - Tomáš Kafka
2个回答

11
添加定义可点击区域的内容形状,例如:
Rectangle()
  .fill(.clear)
  .contentShape(Rectangle())   // << here !!
  .gesture(

2

除了@Asperi的答案之外,还有一种额外的方法是

Color.clear.contentShape(Rectangle())

很明显,但并不对应一个问题,这个问题是关于矩形的,以防万一。 - Asperi
@Asperi 不用担心,我接受了你的答案(谢谢!),但问题的核心是“如何使透明区域可点击” - 无论如何 :) - Tomáš Kafka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接