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 и никогда не вызывался... убрал этот метод, вызванный без проблем.