【问题标题】:MapView delegate issueMapView 委托问题
【发布时间】:2014-08-27 06:05:39
【问题描述】:

我正在开发 MapView。 mapView 委托方法didSelectAnnotationView 在我点击 Pin 时被调用,但当我再次点击 Pin 时,此方法不会被调用,直到我不点击地图。

我希望每当我点击位置 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;
}

【问题讨论】:

  • 分享一下你写的didSelectAnnotationView方法?
  • @GenieWanted:共享
  • 这是 didSelectAnnotationView 的默认属性

标签: ios objective-c


【解决方案1】:

我遇到了同样的问题,但我解决了。调用 didDeselectAnnotationView 方法并将其从 superview 中移除。像这样:

-(void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
for (UIView *subview in view.subviews ){
    [subview removeFromSuperview];
    }
}

它对我有用,希望它对你有用。

【讨论】:

    【解决方案2】:
    #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
        {
        }
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-23
      • 2011-04-12
      相关资源
      最近更新 更多