2011-10-25 12 views
5

Mi aplicación coloca una chincheta en el mapa y luego selecciona su uso de animación para que el usuario tenga una pista visual y pueda leer inmediatamente el título/subtítulo. El siguiente código funciona tanto en iOS4 como en iOS5, pero en iOS5, la anotación no se selecciona automáticamente a menos que cambie la animación a NO en el método selectAnnotation.MKAnnotación no seleccionada en iOS5

¿Alguna idea de por qué?

MapAnnotations *pushpin = [[MapAnnotations alloc] initWithCoordinate:coordinate]; 
pushpin.title = [selectedStation valueForKey:@"name"]; 
pushpin.subtitle = [selectedStation valueForKey:@"address"]; 
[stationMap addAnnotation:pushpin]; 
[stationMap selectAnnotation:pushpin animated:YES]; 

[pushpin release]; pushpin = nil; 

Respuesta

5

No sé por qué iba a funcionar antes, pero la animación requiere probablemente la vista de anotación que ser creado y listo que es poco probable inmediatamente después de añadir la anotación.

Lo que puede hacer es mover la selección al método delegado didAddAnnotationViews que deben trabajar en todas las versiones de iOS:

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views 
{ 
    for (MKAnnotationView *av in views) { 
     if ([av.annotation isKindOfClass:[MapAnnotations class]]) { 
      MapAnnotations *pushpin = (MapAnnotations *)av.annotation; 
      if (_this_pushpin_is_the_one_to_select) { 
       [mapView selectAnnotation:av.annotation animated:YES]; 
       break; //or return; 
      } 
     } 
    } 
} 
+0

Gracias. Deben haber cambiado algo en iOS5 con respecto a las animaciones en anotaciones. Esto funciona. Un código demasiado alto para algo tan simple, pero cumple su función. – afterxleep

+2

Para evitar la búsqueda, puede mantener una referencia a la anotación seleccionada como un ivar cuando la agrega, por lo que solo debe llamar a selectAnnotation en el delegado. – Anna

Cuestiones relacionadas