我有一个非常简单的问题:如何检查地图上是否选择了MKAnnotation?
我看不到选中的(GET)属性。
我希望解决方案不是通过触发选定/取消选择的事件并将其结果存储在属性中,并在需要时检查它们。必须有一个更直接的。
非常感谢!
答案 0 :(得分:6)
利用MKMapView didSelectAnnotationView:
的委托方法使用可以获取事件MKAnnotation选择
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
// Annotation is your custom class that holds information about the annotation
if ([view.annotation isKindOfClass:[Annotation class]]) {
Annotation *annot = view.annotation;
NSInteger index = [self.arrayOfAnnotations indexOfObject:annot];
}
}
希望它会对你有所帮助。
答案 1 :(得分:6)
结帐-[MKMapView selectedAnnotations]
。
答案 2 :(得分:1)
只是对此进行了更新 - 在iOS 4中,有MKMapViewDelegate
种方法可用于跟踪注释选择和取消选择:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
您可以使用Observer for Selected annotation Event:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:@"ANSELECTED"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSString *action = (NSString*)context;
if([action isEqualToString:@"ANSELECTED"]){
BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
if (annotationAppeared) {
// clicked on an Annotation
}
else {
// Annotation disselected
}
}
}