Am rezolvat problema adăugarea unui observator. Observatorul face apoi lucru și după aceea înștiințarea apare.
Am avut ceva probleme cu este că nu am putut actualiza informațiile din bula înștiințărilor după ce este afișat bula. Singura modalitate de a face acest lucru este de a crea propriul bule înștiințărilor (după cum am înțeles), care este ceva ce nu am simtit ca avand in vedere ca am un termen limită. Am stabilit că, prin adăugarea unei UIView în plus, cu un alfa pe ea și un text „Obținerea de date de locație ...“. Am arată doar în sus acest punct de vedere, atunci când apăsați o locație și când observatorul se face, am ascunde din nou punctul de vedere (în afara cursului, folosind o animație).
Sper că răspunsul meu a ajutat pe alții.
Cod:
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:GMAP_ANNOTATION_SELECTED];
Unele mai mult cod:
- (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");
}
}
}
Și a pus acest lucru doar după @ sintetiza anii:
NSString * const GMAP_ANNOTATION_SELECTED = @"gmapselected";