0

我有一个mapView(RouteMe mapView),上面有注释(标记)。
在 mapView 上有一个touchesEnded函数,我通常在该函数上捕获所有事件。一些标记在它们上面有一个附加层。该层有一些动画图像,据我所知,这是我可以在标记顶部显示这些动画图像的唯一方法。

问题是我不知道如何拦截在其上具有该层的标记上的触摸。当我测试命中时,touchesEnded我识别出一个CALayer类而不是一个RMMArker类(显然,因为该层位于标记的顶部,因此首先拦截事件)。轻按顶部 CALayer 后如何到达标记?

谢谢

4

3 回答 3

1

Hackish 解决方法:创建 RMMapLayer 而不是 CALayer。请记住在子图层上设置注释以使标注之类的东西起作用,例如在您的 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 回答