路线我与UIButtonTypeDetailDisclosure-Button标记标签 - 按钮不clickabel

问题描述:

我有一个路由我框架和标记标签的问题。我现在正在尝试约5个小时,但没有运气,几乎在网上搜索了关于这个问题的所有论坛主题。 我想添加一个带有UIButtonTypeDetailDisclosure-Button的标记标签。 当我将按钮添加到应该是标签的UIView时,我无法点击按钮。路线我与UIButtonTypeDetailDisclosure-Button标记标签 - 按钮不clickabel

我的代码如下:

- (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

我刚刚为此提交了一个请求。 https://github.com/route-me/route-me/pull/161 – 2012-01-27 21:13:24

+0

我想在我的项目中实现thins,你必须遵守什么委托才能使用ontapmarker方法? – 2013-11-08 11:00:48

好吧,终于我设法解决了这个问题。 也许这是一个有点脏的解决方法,但无论如何,它的工作;)

我修改了路线,我的框架,并增加了一个名为方法

- (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; 

方法被调用。

希望这有助于其他人;)

看看这个线程在谷歌路线组列表: http://groups.google.com/group/route-me-map/browse_thread/thread/343cb3ebfd9480e3

有人回答为标志的“气球”标签的一些代码,使用一个关闭按钮。

+0

感谢您的回答,我试着创建我的标记的代码,但我的Disclosurebutton仍然不可点击。 - .-任何其他想法? – 2011-05-12 06:18:54

我遇到了麻烦,这个解决方案,我不希望这些人谁告诉你,做不同的,因为你可以有很好的事业做的事情之一你做他们的方式。

我采取了这种初始方法,然后通过另一个线程,我意识到:如果我只想一次有一个标注,我可以管理他作为mapView的子视图,并使用mapView.markerManager的帮助器方法。 RMMarker对象有一个数据指针,您可以使用它来填充您的标注泡泡的内容。

这节省了我很多时间,我有一个令人满意的解决方案,根本不会弄脏。

此问题已由此请求https://github.com/route-me/route-me/pull/161解决。

它已在2012年2月21日在路由代码中合并。