Chaque fois que l'utilisateur fait défiler la carte ou effectuer un zoom avant / arrière, cette méthode est appelée instantanément. Je veux retarder l'appel à cette méthode par exemple 2 secondes. Est-il possible de faire ça?
Retarder l'appel à la méthode délégué - Mapview: regionDidChangeAnimated:
voix
3
2 réponses
voix 4
4
Vous pouvez mettre en œuvre cette méthode comme ceci:
-(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];
}
Puis, quelque part dans la même classe:
-(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
}
Bien sûr, si vous n'avez pas besoin l' un de ces arguments (soit mapViewou animated), vous pouvez vous simplifier la tâche considérablement en ne passant celui que vous avez besoin.
Si vous ne pouvez pas modifier le code de votre MKMapViewDelegate, peut - être que vous pourriez faire quelque chose de similaire avec la méthode swizzling, bien que vous obtenez vraiment aki.
voix 0
0
Vous pouvez envoyer un message retardé avec performSelector:withObject:afterDelay:ou l' une de ses méthodes connexes.













