Objective c 如何将条件放入所选方法注释mapkit中?
我有一个方法可以为地图中的任何注释添加选定的方法,但我不希望此方法适用于我的注释位置(用户位置注释),我不知道如何操作 这是我将select方法添加到任何注释的代码,我希望该方法不适用于我的用户位置注释Objective c 如何将条件放入所选方法注释mapkit中?,objective-c,annotations,mkmapview,mkannotation,mkannotationview,Objective C,Annotations,Mkmapview,Mkannotation,Mkannotationview,我有一个方法可以为地图中的任何注释添加选定的方法,但我不希望此方法适用于我的注释位置(用户位置注释),我不知道如何操作 这是我将select方法添加到任何注释的代码,我希望该方法不适用于我的用户位置注释 - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { NSString *action
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSString *action = (__bridge NSString *)context;
if ([action isEqualToString:ANNOTATION_SELECTED_DESELECTED]) {
BOOL annotationSelected = [[change valueForKey:@"new"] boolValue];
if (annotationSelected) {
NSLog(@"Annotation was selected, do whatever required");
}else {
NSLog(@"Annotation was deselected, do what you must");
}
}
}
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
for (MKAnnotationView *anAnnotationView in views) {
if (!Change) {
[anAnnotationView setCanShowCallout:NO]; //this method is for show popover annotation
[anAnnotationView addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:(__bridge void *)(ANNOTATION_SELECTED_DESELECTED)];
NSLog(@"%@",anAnnotationView);
}
}
}
为什么要使用KVO来检测注释选择?为什么不改用didSelectAnnotationView委托方法,您就不需要做这些事情了?在任何情况下,您都可以检查view.annotation是否属于MKUserLocation类型。@Anna我的朋友,我很困惑,请告诉我代码是什么?在
didSelectAnnotationView
delegate方法中,它类似于:if([view.annotation iskindof class:[MKUserLocation class]]){//handler user location tap}else{//handle非用户位置点击}