route-me标记标签,带UIButtonType详细信息Disclosure-Button - 按钮不可点击

时间:2011-05-11 16:58:46

标签: iphone uiview uibutton marker route-me

我遇到了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");
}

我希望有人可以帮助我。谢谢:))

我需要更多信息,请告诉我们!

4 个答案:

答案 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对象有一个数据指针,您可以使用它来填充标注气泡的内容。

这节省了我很多时间,而且我有一个令人满意的解决方案,根本没有那么脏。