无法select注释?

我在地图视图上有一个注释。 我可以select它,但是我点击它没有任何反应。 你可以帮帮我吗? 有没有人遇到类似的问题? 这里是build立阴谋的方法:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"MapVC"]; if (!aView) { aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MapVC"]; aView.canShowCallout = YES; aView.draggable=YES; aView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; // could put a rightCalloutAccessoryView here } aView.annotation = annotation; [(UIImageView *)aView.leftCalloutAccessoryView setImage:nil]; return aView; } 

并将它们添加到地图视图:

 - (void)updateMapView { if (self.mapView.annotations) [self.mapView removeAnnotations:self.mapView.annotations]; if (self.annotation) [self.mapView addAnnotation:self.annotation]; } 

而且对于注释的按压做出反应:

 - (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView { NSLog(@"did select annotation"); } 

顺便说一下,方法[self.mapView selectAnnotation:注释]的作品,但没有提出一个标注(我用断点检查它)。 虽然只是logging注释不(通过断点再次)。

如果标注的title为零或空白,标注将不会显示(即使其他所有设置都正确,包括canShowCallout )。

当您点击注释时, didSelectAnnotationView委托方法将被调用,如果注释具有非空白title ,则会显示标注。

关于你在评论中的问题:

…是对的我有一个单独的类来包装我所有的数据,我的注释类包含该数据类的实例?

这没有什么错。
如果你想保持地图相关的逻辑与基类分开,这很好,可能是一个复杂的应用程序的好主意,其中基础数据类可能不仅仅用于注释。

如果你的应用程序非常简单,并且数据只用于注释,那么可以将事情简单化,并将两者结合起来,但这不是必需的。

只要你坚持使用直接引用,而不是试图使用数组索引或视图/button标签从注释链接回某些数据对象,那么“正确的”类实现取决于什么适用于你的应用程序。

尝试将MKAnnotationView的canShowCallout属性设置为YES,以防您没有。