1

私の mapView にはその上に注釈があり、一部の注釈にはCALayerその上に余分なものがあります。
問題は、これらのレイヤーが上にあるアノテーションがタッチを渡さず、ビューが CALayer がタップされたことを検出することです。

これらの CALayer を「タッチに対して透明」にして、どの注釈がタップされたかがわかるようにするソリューションが必要になります。

  • どういうわけか、最上位の CALayers をタッチに対して透明にする方法はありますか?
  • タップされた基になる注釈を検出できるようにする別のアプローチはありますか?
4

2 に答える 2

1

Layer サブクラスでこれらをこのようにオーバーライドしてみてください

- (CALayer *)hitTest:(CGPoint)thePoint
{
    return nil;
}

またはこれ

- (BOOL)containsPoint:(CGPoint)thePoint
{
   return NO;
}

レイヤーがタッチをキャッチしなくなる可能性があります

于 2013-02-13T17:34:04.720 に答える
1

ブロッキング CALayer は以前の CALAyer の上にあり、祖先にアクセスするだけで済みました - theBlockingLayer.superlayer. 祖先を調べることで、私は必要なものをすべて手に入れました

于 2013-02-14T09:43:09.113 に答える