2014-07-08 2 views
0

Я работаю с MapQuest, но я думаю, что это не проблема.Пользовательская кнопка MQAnnotationView не может быть нажата

У меня есть карта (с MapQuest) и пользовательские контакты на ней. Я могу нажать на контакты, и моя пользовательская выноска (xib-файл с надписями и одной кнопкой) появляется, и все работает нормально. Единственная проблема заключается в том, что я не могу нажать кнопку в пользовательском представлении callout (UIView).

Вот мой код:

-(MQAnnotationView*)mapView:(MQMapView *)aMapView viewForAnnotation:(id<MQAnnotation>)annotation { 

    static NSString* identifier = @"Pins"; 
    MQAnnotationView * annotationView = (MQAnnotationView *)[self->mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 

    annotationView = [[MQAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier]; 
    annotationView.image = [UIImage imageNamed:@"marker_schuhe"]; 

    annotationView.enabled = YES; 
    annotationView.canShowCallout = NO; 

    return annotationView; 
} 

И в моем методе didSelectAnnotationView:

- (void)mapView:(MQMapView *)mapView didSelectAnnotationView:(MQAnnotationView *)view { 
     callOutView *calloutView = (callOutView *)[[[NSBundle mainBundle] loadNibNamed:@"callOutView" owner:self options:nil] objectAtIndex:0]; 
    CGRect calloutViewFrame = calloutView.frame; 
    calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 15, -calloutViewFrame.size.height); 
    calloutView.frame = calloutViewFrame; 

    [calloutView.my_button addTarget:self action:@selector(button_pressed:) forControlEvents:UIControlEventTouchUpInside]; //here is something wrong, button_pressed is never called 

[view addSubview:calloutView]; 
} 

ответ

0

Набор userInteractionEnabled = YES; на calloutView?

calloutview

- редактирование после комментария от пользователя

Если @selector не работает (потому что MKAnotationView перехватывает его) попробуйте добавить UIGesture к вашему UIButton, как это:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] 
      initWithTarget:self action:@selector(button_pressed:)]; 
     tap.numberOfTapsRequired = 1; 
     [calloutView.my_button addGestureRecognizer:tap]; 
+0

Спасибо Майкл, но ваше предложение не сработало. Вызовы и кнопка видны, но кнопка не доступна. Когда я нажимаю на весь calloutView, карта приближается. Может быть, здесь основная проблема? –

+0

Привет, Майкл, UIGesture не работает. Может быть, button.frame находится за пределами UIView? Я вижу свое подзаголовок с кнопкой (вот экран) http://s30.postimg.org/r73zxx7up/IMG_1566.png кнопка справа «>» не доступна для кликов, и я абсолютно не знаю почему. –

Смежные вопросы