我正在使用MapView。当我点击Pin时会调用mapView委托方法didSelectAnnotationView
但是当我再次点击Pin时,在我没有点击地图之前,这个方法不会被调用。
我希望每当我点击位置时,方法didSelectAnnotationView
都会被调用。
请帮忙
这是didSelectAnnotationView
方法:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView{
id<MKAnnotation> annotation = aView.annotation;
if (!annotation || ![aView isSelected])
return;
if ([[annotation title] isEqualToString:@"My Location"])
return;
NSLog(@"Annotation Title: %@",[annotation title]);
if(self.calloutAnnotation != nil)
{
[pMapView removeAnnotation:self.calloutAnnotation];
self.calloutAnnotation = nil;
return;
}
if ( NO == [annotation isKindOfClass:[MultiRowCalloutCell class]])
{
NSObject <MultiRowAnnotationProtocol> *pinAnnotation = (NSObject <MultiRowAnnotationProtocol> *)annotation;
if (!self.calloutAnnotation)
{
self.calloutAnnotation = [[MultiRowAnnotation alloc] init];
[self.calloutAnnotation copyAttributesFromAnnotation:pinAnnotation];
[mapView addAnnotation:self.calloutAnnotation];
}
self.selectedAnnotationView = aView;
return;
}
[mapView setCenterCoordinate:annotation.coordinate animated:YES];
self.selectedAnnotationView = aView;
}
答案 0 :(得分:1)
我遇到了同样的问题,但我解决了。调用didDeselectAnnotationView方法并从superview中删除它。就像这样:
-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
for (UIView *subview in view.subviews ){
[subview removeFromSuperview];
}
}
它对我有用,希望它适合你。
答案 1 :(得分:0)
#pragma mark MapView Delegate Methods
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView
{
indexPathTag=aView.tag;
[mapView deselectAnnotation:aView.annotation animated:YES];
}
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)aView
{
}
我遇到了同样的问题。这对我有用:) 希望这对你也有用。 感谢