У меня есть различные пользовательские аннотации карты в моем MKMapView, и при создании пользовательского представления я добавляю наблюдателя и отключаю всплывающее окно по умолчанию.
Вверху 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...");
}
}
Моя проблема в том, что когда мой поповер закрывается, если я хочу выбрать ту же аннотацию, она просто не работает ... Например, если состояние наблюдателя все еще "активировано". Поэтому, чтобы выбрать мою аннотацию, мне нужно выбрать другую, а затем я могу выбрать ее снова ... Это раздражает, когда я не могу выбрать одну и ту же аннотацию дважды подряд.
Пожалуйста, помогите мне!
Спасибо.