calloutAccessoryControlTapped не вызывается

Я пытаюсь использовать функцию CalloutAccessory, но метод делегата никогда не вызывается. Я правильно настроил делегат, так как другие методы делегата mapview в моем коде работают нормально, но по какой-то причине метод делегата никогда не вызывается при нажатии кнопки.

Я попытался расширить RouteViewAnnotation как из MKAnnotationView, так и из MKPinAnnotationView, и это не имеет значения. Метод делегата никогда не вызывается.

Что мне не хватает? Нужно ли мне что-то еще, что не здесь, чтобы это работало? RouteAnnotationView просто переопределяет drawrect, и в нем нет другого кода.

Соответствующий код:

В ViewForAnnotation

- (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>) annotation{
if([annotation isMemberOfClass:[RouteAnnotation class]])
{
    RouteAnnotationView *routeAnnotationView = [[RouteAnnotationView alloc] initWithFrame:(CGRectMake(0,0,100,50))] ;
    [routeAnnotationView setBackgroundColor:[UIColor clearColor]];
    routeAnnotationView.centerOffset = CGPointMake(0,-25);
    routeAnnotationView.canShowCallout = TRUE;
    UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100.0, 40.0)];

    [button setTitle:@"Select" forState:UIControlStateNormal];

    button.backgroundColor = [UIColor blueColor];

    [routeAnnotationView setRightCalloutAccessoryView:button];

    return routeAnnotationView;

}
.
.
.
}

В calloutAccssoryControlTapped

- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
{
NSLog(@"CALLOUT BUTTON TOUCHED");
}

1 ответ

Хорошо, я понял это... У меня есть tapGestureRecognizer, назначенный для MapView (A WildcardGestureRecognizer ( https://github.com/OrbJapan/ResizableMKCircleOverlay/blob/master/MapView/WildcardGestureRecognizer.m), если быть точным), добавленным в мой MapView, и хотя это никак не влияло на прикосновения к аннотациям или другие прикосновения в методах делегата MapView или MapView, которые я использовал, по какой-то причине это полностью мешало методу делегата calloutAccessoryControlTapped и никогда не вызывался... убрал этот метод, вызванный без проблем.

Другие вопросы по тегам