J'ai résolu le problème en ajoutant un observateur. L'observateur fait alors sa chose et après cela, la légende apparaît.
Quelque chose que j'ai eu des problèmes avec, c'est que je ne pouvais pas mettre à jour les informations dans la bulle de légende après l'affichage de la bulle. La seule façon de le faire est de créer votre propre bulle d'appel (si je comprends bien), ce qui est quelque chose que je n'avais pas envie de faire, étant donné que j'ai une date limite. J'ai corrigé cela en ajoutant un UIView supplémentaire avec un alpha dessus et un texte "Obtenir les données de localisation ...". Je montre juste cette vue en appuyant sur un emplacement et quand l'observateur est fait, je cache à nouveau la vue (bien sûr en utilisant une animation).
J'espère que ma réponse a aidé les autres.
code:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
code plus:
- (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");
}
}
}
Et mettre ce juste après les années synthétisent @: quelle est exactement
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";
"lorsque la bulle d'appel sortant est ouvert" –
Je veux dire la légende qui s'ouvre lorsque vous appuyez sur la broche d'annotation. Il contient un titre, un sous-titre, leftCalloutAccessoryView et rightCalloutAccessoryView. –