Cada vez que el usuario se desplaza mapa o zooms de entrada / salida, este método se llama de forma instantánea. Quiero retrasar la llamada a este método por ejemplo 2 segundos. ¿Es posible hacer eso?
Retrasar la llamada al método delegado - MAPview: regionDidChangeAnimated:
votos
3
2 respuestas
votos 4
4
Se podría aplicar ese método como este:
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSNumber *animatedNumber = [NSNumber numberWithBool:animated];
NSArray *args = [[NSArray alloc] initWithObjects:mapView,
animatedNumber,nil];
[self performSelector:@selector(delayedMapViewRegionDidChangeAnimated:)
withObject:args
afterDelay:2.0f];
[args release];
}
Entonces, en algún lugar de la misma clase:
-(void)delayedMapViewRegionDidChangeAnimated:(NSArray *)args
{
MKMapView *mapView = [args objectAtIndex:0];
BOOL animated = [[args objectAtIndex:1] boolValue];
// do what you would have done in mapView:regionDidChangeAnimated: here
}
Por supuesto, si usted no necesita uno de esos argumentos (ya sea mapViewoanimated ), usted podría hacer esto mucho más sencillo sólo por pasar el que necesitaba.
Si no se puede simplemente editar el código para su MKMapViewDelegate, tal vez se podría hacer algo similar con swizzling método, aunque a continuación, que está recibiendo muy hacky.
votos 0
0
Puede enviar un mensaje retrasado con performSelector:withObject:afterDelay:o uno de sus métodos relacionados.













