I løste problem med å legge en observatør. Observatøren gjør deretter sine ting og etter at infomeldingen dukker opp.
Noe jeg hadde problemer med er at jeg ikke kunne oppdatere informasjonen i bildeforklaringen boble etter at boblen er vist. Den eneste måten å gjøre dette på er å lage din egen bildeforklaring boble (slik jeg forstår det), som er noe jeg føler meg ikke som gitt at jeg har en tidsfrist. Jeg fikset dette ved å legge til en ekstra UIView med en alfa på den og en tekst "Få plassering data ...". Jeg bare møt opp denne visningen når du trykker på en plassering, og når observatøren er gjort, skjuler jeg utsikten igjen (selvsagt ved hjelp av en animasjon).
Håper svaret mitt hjalp andre.
Kode:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
Noen mer kode:
- (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");
}
}
}
Og sette dette rett etter @ syntetisere tallet:
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";