MapView委托问题

时间:2014-08-27 06:05:40

标签: ios objective-c

我正在使用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;
}

2 个答案:

答案 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
    {
    }

我遇到了同样的问题。这对我有用:) 希望这对你也有用。 感谢