метка маркера route-me с кнопкой UIButtonTypeDetailDisclosure - кнопка не является кликабельной - PullRequest
2 голосов
/ 11 мая 2011

У меня проблема с каркасом route-me и метками маркеров. Я пытаюсь сейчас около 5 часов безуспешно и искал почти все темы форума в Интернете по этому поводу. Я хочу добавить метку маркера с кнопкой UIButtonTypeDetailDisclosure. Когда я добавляю кнопку в 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 ]

3 голосов
/ 26 июня 2011

Хорошо, наконец, мне удалось решить проблему. Может быть, это немного грязный обходной путь, но в любом случае он работает;)

Я изменил структуру 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 голос
/ 23 февраля 2012

Эта проблема решена с помощью этого запроса извлечения https://github.com/route-me/route-me/pull/161.

Он был объединен в коде route-me 21 февраля 2012 года.

0 голосов
/ 13 июля 2011

У меня были проблемы с этим решением, и я не хочу быть одним из тех людей, которые говорят вам, чтобы вы делали это по-другому, потому что у вас могут быть веские причины делать то, что вы делаете.

Я выбрал этот первоначальный подход, затем через другой поток я понял: если я хочу иметь только один вызов за раз, я могу просто управлять им как подпредставлением mapView и использовать вспомогательные методы mapView.markerManager.У объекта RMMarker есть указатель данных, который можно использовать для заполнения содержимого всплывающей подсказки.

Это сэкономило мне много времени, и у меня есть удовлетворительное решение, которое совсем не пачкается.

0 голосов
/ 11 мая 2011

Посмотрите на эту ветку в списке групп Google по маршрутам: http://groups.google.com/group/route-me-map/browse_thread/thread/343cb3ebfd9480e3

кто-то ответил с кодом кода для метки "выноска", использующей кнопку закрытия.

...