Ho risolto il problema aggiungendo un osservatore. L'osservatore poi fa la sua cosa e dopo che il richiamo si presenta.
Qualcosa ho avuto problemi con è che non ho potuto aggiornare le informazioni nella bolla didascalia dopo la bolla è mostrato. L'unico modo per farlo è quello di creare il proprio bolla chiamante (se ho capito bene), che è qualcosa che non avevo voglia, dato che ho una scadenza. Mi fisso che con l'aggiunta di un UIView in più con un alfa su di esso e un testo "Ottenere dati di posizione ...". Ho appena presento quella vista quando si preme una posizione e quando l'osservatore è fatto, mi nascondo la vista di nuovo (fuori rotta utilizzando un'animazione).
Spero che la mia risposta ha aiutato gli altri.
Codice:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
Alcuni più codice:
- (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");
}
}
}
E mettere questo subito dopo la @ sintetizzare di:
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";