我正在开发 MapView。 mapView 委托(delegate)方法 didSelectAnnotationView 在我点击 Pin 时被调用,但是当我再次点击 Pin 时,该方法不会被调用,直到我不点击 map 。
每当我点击位置 Pin 时,我都希望调用 didSelectAnnotationView 方法。
请帮忙
这是 didSelectAnnotationView 方法:
- (void)mapViewMKMapView *)mapView didSelectAnnotationViewMKAnnotationView *)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;
}
Best Answer-推荐答案 strong>
我遇到了同样的问题,但我解决了。调用 didDeselectAnnotationView 方法并将其从 superview 中移除。像这样:
-(void)mapViewMKMapView *)mapView didDeselectAnnotationViewMKAnnotationView *)view {
for (UIView *subview in view.subviews ){
[subview removeFromSuperview];
}
}
它对我有用,希望它对你有用。
关于ios - MapView 委托(delegate)问题,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/25519999/
|