Я решил проблему с добавлением наблюдателя. Затем наблюдатель делает свое дело, и после этого появляется выноска.
У меня возникли проблемы с тем, что я не смог обновить информацию в пузыре выноски после отображения пузыря. Единственный способ сделать это - создать собственный пузырь выноски (как я понимаю), и это то, что мне не показалось, что у меня есть крайний срок. Я исправил это, добавив дополнительный UIView с альфой на нем и текст «Получение данных о местоположении ...». Я просто показываю эту точку зрения при нажатии на место и, когда наблюдатель сделан, я снова скрываю представление (конечно, используя анимацию).
Надеюсь, что мой ответ помог другим.
Код:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
немного кода:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context{
NSString *action = (NSString*)context;
MKAnnotationView *annotationView = [(MKAnnotationView*)object retain];
BikeAnnotation *bike = [[annotationView annotation] retain];
if([action isEqualToString:GMAP_ANNOTATION_SELECTED] && [[bike _stationType] intValue] != 5 && [[bike _stationType] intValue] != 6){
BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
if (annotationAppeared) {
NSLog(@"Annotation selected");
else {
NSLog(@"annotation deselected");
}
}
}
И поставить это только после того, как @ синтезируют'S:
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";
что именно "при открытии выноска пузырь" –
Я имею в виду выноску, которая открывается при нажатии значка аннотации. Он содержит заголовок, субтитры, leftCalloutAccessoryView и rightCalloutAccessoryView. –