didSelectAnnotationView不调用自定义MKAnnotationView

时间:2014-02-10 19:11:54

标签: ios objective-c

  1. 我在mapView
  2. 上设置了委托
  3. 我已将setCanShowCallout:设置为YES
  4. 来自我的自定义MKAnnotationView的代码:

    - (id)initWithAnnotation:(id<MKAnnotation>)annotation reuseIdentifier:(NSString *)reuseIdentifier{
     self = [super initWithAnnotation:annotation reuseIdentifier:reuseIdentifier];
        if (self) {
        self.canShowCallout = YES;
        _pinView = [[CustomPinView alloc] init];
        [self addSubview:_pinView];
     }
    return self;
    }
    
  5. 我的VC代码:

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation{
      MapAnnotationView *pinView = nil;
    
      pinView = (MapAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:@"lol"];
      if (pinView == nil){
          pinView = [[MapAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"lol"];
      }
      return pinView;
    }
    
  6. 我做错了什么,请帮助我。

1 个答案:

答案 0 :(得分:2)

好吧,我会自己做。

  1. 您应该将图片设置为具有子视图大小的自定义MKAnnotationView。

  2. 只有当你的MKPointAnnotation有描述字符串(不是nil或@“”)时才应设置canShowCallout = YES,否则你应该设置canShowCallout = NO

  3. 在该方法之后将调用didSelectAnnotationView。希望对某人有所帮助。