我遇到了route-me框架和标记标签的问题。我现在正在尝试大约5个小时没有运气,几乎在网上搜索关于此的所有论坛主题。 我想在其上添加带有UIButtonTypeDetailDisclosure-Button的标记标签。 当我将Button添加到应该是标签的UIView时,我无法点击Button。
我的代码如下:
- (void)tapOnMarker:(RMMarker*)marker onMap:(RMMapView*)map {
UIView *frame = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
button.frame = CGRectMake(0, 0, 34, 34);
button.enabled = YES;
button.userInteractionEnabled = YES;
[button addTarget:self action:@selector(markerLabelButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[frame addSubview:button];
[marker setLabel:frame];
[marker showLabel];
}
-(void)markerLabelButtonPressed:(id)sender {
NSLog(@"pressed");
}
我希望有人可以帮助我。谢谢:))
我需要更多信息,请告诉我们!
答案 0 :(得分:3)
好吧最后我设法解决了这个问题。 也许这是一个有点肮脏的解决方法,但无论如何它正在工作;)
我修改了route-me框架并添加了一个名为
的方法- (void) tapOnLabelForMarker: (RMMarker*) marker onMap: (RMMapView*) map onLayer:(CALayer *)layer;
在RMMapView.m中,我在第584行添加了以下行:
else if ([superlayer superlayer] != nil && [[[superlayer superlayer] superlayer] isKindOfClass: [RMMarker class]]) {
if (_delegateHasTapOnLabelForMarker) {
[delegate tapOnLabelForMarker:(RMMarker*)[[superlayer superlayer] superlayer] onMap:self onLayer:superlayer];
}
}
现在点击了公开按钮,执行了这部分代码并调用了我的方法。
点击标记标签的任何其他区域时- (void) tapOnLabelForMarker: (RMMarker*) marker onMap: (RMMapView*) map;
调用方法。
希望这可以帮助其他人;)
答案 1 :(得分:1)
此问题由此拉取请求https://github.com/route-me/route-me/pull/161解决。
它已于2012年2月21日合并为route-me代码。
答案 2 :(得分:0)
在路线google群组列表中查看此主题: http://groups.google.com/group/route-me-map/browse_thread/thread/343cb3ebfd9480e3
有人使用关闭按钮的标记“气球”标签的代码回答。
答案 3 :(得分:0)
我遇到了这个解决方案的问题,而且我不想成为那些告诉你以不同方式做事的人之一,因为你可能有充分的理由按照你的方式做事。
我采用了这种初始方法,然后通过我意识到的另一个线程:如果我一次只想要一个标注,我可以将它作为mapView的子视图管理并使用mapView.markerManager的辅助方法。 RMMarker对象有一个数据指针,您可以使用它来填充标注气泡的内容。
这节省了我很多时间,而且我有一个令人满意的解决方案,根本没有那么脏。