0

注釈(マーカー)があるmapView(RouteMe mapView)があります。
mapViewには、touchesEnded通常すべてのイベントをキャッチする関数があります。一部のマーカーには、その上に追加のレイヤーがあります。そのレイヤーにはいくつかのアニメーション画像があり、私が知っている限り、これがマーカーの上にこれらのアニメーション画像を表示できる唯一の方法です。

問題は、その上にそのレイヤーがあるマーカーのタッチをインターセプトする方法がわからないことです。ヒットをテストすると、クラスではなくクラスtouchesEndedが認識されます(明らかに、レイヤーはマーカーの上にあるため、最初にイベントをインターセプトします)。一番上のCALayerをタップしたら、どうすればマーカーに到達できますか?CALayerRMMArker

ありがとう

4

3 に答える 3

1

ハックの回避策:CALayerの代わりにRMMapLayerを作成します。RMMapLayerサブクラスなどで、コールアウトなどを機能させるために、サブレイヤーに注釈を設定することを忘れないでください。

RMMapLayer *sublayer = [[RMMapLayer alloc] init];
sublayer.annotation = ann;
sublayer.contents = (id)img2.CGImage;
sublayer.contentsScale = img2.scale;
sublayer.position = CGPointMake(CGRectGetWidth(self.bounds)/2, CGRectGetHeight(self.bounds)/2);
sublayer.bounds = CGRectMake(0, 0, img2.size.width, img2.size.height);
[self addSublayer:sublayer];

ただし、これが壊れる可能性のあるものが他にいくつあるかはわかりません。そのため、この問題をフォローして更新を確認できます: https ://github.com/mapbox/mapbox-ios-sdk/issues/190

于 2013-02-13T23:09:38.957 に答える
0

パススルーするようにタッチを指示できます。この質問を見てください:透明なUIViewの後ろにあるボタンをクリックするにはどうすればよいですか?

于 2013-02-12T22:40:42.110 に答える
0

CALayerはCALAyerの上にあるため、必要なのはその祖先にアクセスすることだけでしたblockingLayer.superlayer
祖先をチェックすることで、必要なものをすべて手に入れることができました。
これで問題は解決しました。

于 2013-02-14T09:41:34.687 に答える