我在MKMapView上有不同的自定义地图标注,创建自定义视图时我会添加一个观察者并禁用默认弹出窗口。
在MapViewController.m文件的顶部:
我的问题是当我的弹出框被关闭后,如果我想选择同一个注释,它就无法工作...就好像观察者的状态仍然是“激活”的一样。因此,为了选择我的注释,我需要先选择另一个注释,然后才能再次选择它...不能连续两次选择相同的注释很烦人。
请帮帮我!谢谢。
在MapViewController.m文件的顶部:
static NSString* const ANNOTATION_SELECTED_DESELECTED = @"annotationSelectedOrDeselected";
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
// Things here.
// Enable the view.
[annotationView setEnabled:YES];
// Delete the default popup.
[annotationView setCanShowCallout:NO];
// Add an observer on the annotation.
[annotationView addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:ANNOTATION_SELECTED_DESELECTED];
return annotationView;
}
然后在观察函数中,我创建弹出框并显示:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
NSString *action = (NSString *)context;
if ([action isEqualToString:ANNOTATION_SELECTED_DESELECTED]) {
BOOL annotationSelected = [[change valueForKey:@"new"] boolValue];
if (annotationSelected) {
// Actions when annotation selected.
// I create the appropriate popover here and display it in self.view
}
} else {
// Actions when annotation deselected.
NSLog(@"Annotation deselected! But never pass here...");
}
}
我的问题是当我的弹出框被关闭后,如果我想选择同一个注释,它就无法工作...就好像观察者的状态仍然是“激活”的一样。因此,为了选择我的注释,我需要先选择另一个注释,然后才能再次选择它...不能连续两次选择相同的注释很烦人。
请帮帮我!谢谢。