2

route-meフレームワークとマーカーラベルに問題があります。私は今、運がないまま約5時間試していますが、これについてWeb上のほぼすべてのフォーラムトピックを検索しました。UIButtonTypeDetailDisclosure-Buttonが付いたマーカーラベルを追加したいと思います。ラベルであるはずのUIViewにボタンを追加すると、ボタンをクリックできなくなります。

私のコードは次のとおりです。

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

4 に答える 4

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;

メソッドが呼び出されます。

これが他の誰かに役立つことを願っています;)

于 2011-06-26T14:29:09.503 に答える
1

この問題は、このプルリクエストhttps://github.com/route-me/route-me/pull/161によって解決されます。

2012年2月21日にroute-meコードにマージされました。

于 2012-02-23T18:32:08.583 に答える
0

ルートグーグルグループリストでこのスレッドを見てください:http: //groups.google.com/group/route-me-map/browse_thread/thread/343cb3ebfd9480e3

誰かが閉じるボタンを使用するマーカー「バルーン」ラベルのコードで答えられました。

于 2011-05-11T17:01:23.333 に答える
0

私はこの解決策に問題を抱えていました。私は、あなたが自分のやり方で物事を行う正当な理由があるかもしれないので、別の方法でそれを行うようにあなたに言う人の一人になりたくありません。

私はこの最初のアプローチを採用し、次に別のスレッドを介して気づきました。一度に1つのコールアウトのみが必要な場合は、彼をmapViewのサブビューとして管理し、mapView.markerManagerのヘルパーメソッドを使用できます。RMMarkerオブジェクトには、コールアウトバブルの内容を入力するために使用できるデータポインタがあります。

これは私に多くの時間を節約しました、そして私はそれをまったく汚さない満足のいく解決策を持っています。

于 2011-07-12T20:13:34.420 に答える