Ich löste das Problem, einen Beobachter hinzufügen. Der Beobachter dann tut seine Sache und danach die Legende erscheint.
Etwas, das ich hatte Probleme mit ist, dass ich nicht die Informationen in der Hinweisblase aktualisieren konnten, nachdem die Blase gezeigt. Der einzige Weg, dies zu tun, ist Ihre eigene Hinweisblase zu schaffen (wie ich es verstehe), die etwas, das ich nicht so gegeben hätte das Gefühl, dass ich einen Termin habe. Ich reparierte, dass eine zusätzliche UIView mit einem Alpha auf sie durch Zugabe und einem Text „Standortdaten bekommen ...“. Ich zeige nur diese Ansicht auf, wenn eine Position gedrückt, wenn der Beobachter geschehen ist, ich verstecke die Ansicht wieder (aus der Bahn durch eine Animation verwenden).
Hoffe, dass meine Antwort anderen geholfen.
Code:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
Einige weitere Code:
- (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");
}
}
}
Und setzen diese unmittelbar nach dem @ synthesize ist:
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";