Θα λυθεί το πρόβλημα με την προσθήκη ενός παρατηρητή. Ο παρατηρητής στη συνέχεια, κάνει το πράγμα του και μετά από αυτό η επεξήγηση εμφανίζεται.
Κάτι είχα προβλήματα με είναι ότι δεν θα μπορούσα να ενημερώσετε τις πληροφορίες στο συννεφάκι επεξήγησης αφού η φούσκα εμφανίζεται. Ο μόνος τρόπος για να γίνει αυτό είναι να δημιουργήσετε τη δική σας φούσκα επεξήγηση (όπως το αντιλαμβάνομαι), το οποίο είναι κάτι που εγώ δεν αισθάνομαι σαν δεδομένο ότι έχω μια προθεσμία. Θα καθοριστεί ότι με την προσθήκη ενός επιπλέον UIView με μία άλφα πάνω του και ένα κείμενο «Λήψη δεδομένων θέσης ...». Απλά εμφανίζονται αυτή την άποψη όταν το πάτημα ενός θέση και όταν ο παρατηρητής γίνεται, έχω κρύψει την άποψη και πάλι (εκτός φυσικά από τη χρήση ενός animation).
Ελπίζω η απάντησή μου βοήθησε τους άλλους.
Κώδικας:
[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");
}
}
}
Και κάνει αυτό αμέσως μετά το @ συνθέσουν το:
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";