【问题标题】:route-me marker label with UIButtonTypeDetailDisclosure-Button - Button isn't clickabel带有 UIButtonType Detail Disclosure-Button 的 route-me 标记标签 - 按钮不可点击
【发布时间】:2011-05-11 16:58:45
【问题描述】:

我的 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");
}

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

如果您需要更多信息,请告诉我!

【问题讨论】:

  • 我刚刚为此提交了一个拉取请求。 github.com/route-me/route-me/pull/161
  • 我正在尝试在我的项目中实现 Thins,您必须遵守什么委托才能使用 ontapmarker 方法?

标签: iphone uiview uibutton marker route-me


【解决方案1】:

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

我修改了 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;

方法被调用。

希望这对其他人有帮助;)

【讨论】:

    【解决方案2】:

    此拉取请求 https://github.com/route-me/route-me/pull/161 解决了此问题。

    它已于 2012 年 2 月 21 日合并到 route-me 代码中。

    【讨论】:

      【解决方案3】:

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

      有人回答了一些使用关闭按钮的标记“气球”标签的代码。

      【讨论】:

      • 感谢您的回答,我尝试了创建标记的代码,但我的 Disclosurebutton 仍然无法点击。 -.- 还有其他想法吗?
      【解决方案4】:

      我在使用这个解决方案时遇到了麻烦,我不想成为那些告诉你以不同方式做事的人之一,因为你可能有充分的理由按照自己的方式做事。

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

      这为我节省了很多时间,而且我有一个令人满意的解决方案,而且完全不会弄脏。

      【讨论】:

        猜你喜欢
        • 2016-10-09
        • 2011-04-27
        • 1970-01-01
        • 1970-01-01
        • 2014-08-04
        • 1970-01-01
        • 2018-05-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多