我有一个非常简单的问题:如何检查是否在地图上选择了 MKAnnotation?
我看不到选定的类似 (GET) 属性。
我希望解决方案不是通过触发选择/取消选择事件并将其结果存储在属性中并在需要时检查它们。必须有一个更直接的。
非常感谢!
我有一个非常简单的问题:如何检查是否在地图上选择了 MKAnnotation?
我看不到选定的类似 (GET) 属性。
我希望解决方案不是通过触发选择/取消选择事件并将其结果存储在属性中并在需要时检查它们。必须有一个更直接的。
非常感谢!
利用 MKMapViewdidSelectAnnotationView:
使用的委托方法可以得到事件 MKAnnotation Selected
-(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];
}
}
希望它会帮助你。
退房-[MKMapView selectedAnnotations]
。
只是对此的更新——在 iOS 4 中,有一些MKMapViewDelegate
方法可用于跟踪注释选择和取消选择:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
您可以将 Observer 用于 Selected annotation 事件:
[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
}
}
}