Chaque fois que l'utilisateur fait défiler la carte ou effectue un zoom avant/arrière, cette méthode est appelée instantanément. Je veux retarder l'appel à cette méthode par disons 2 secondes. Est-il possible de faire ça?Retarder l'appel à la méthode déléguée - mapView: regionDidChangeAnimated:
3
A
Répondre
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 mapView
ou animated
), vous pourriez rendre cela considérablement plus simple en passant seulement celui dont vous aviez besoin.
Si vous ne pouvez pas modifier le code de votre MKMapViewDelegate
, vous pourriez peut-être faire quelque chose de similaire avec la méthode swizzling, bien que vous obtenez vraiment aki.
0
Vous pouvez envoyer un message différé avec performSelector:withObject:afterDelay:
ou l'une de ses méthodes associées.
Questions connexes
- 1. NSTimer avec la méthode déléguée
- 2. La méthode déléguée mapViewDidFailLoadingMap est appelée avec l'erreur = 0
- 3. Run méthode déléguée avec BeginInvoke
- 4. application se plantage lors de l'utilisation NSAutoreleasePool à l'intérieur méthode MKMapview regionDidChangeAnimated
- 5. Comment tester une méthode déléguée
- 6. Comment accéder à la méthode déléguée d'une autre classe?
- 7. multiple regionDidChangeAnimated calls - que donne-t-on?
- 8. méthode déléguée OpenFlow touchAtIndex pas déclenché
- 9. UITableView méthode déléguée appelé deux fois
- 10. Quelle est la méthode déléguée appelée lorsqu'un MKPinAnnotationView est touché?
- 11. Pourquoi la méthode déléguée asynchrone nécessite-t-elle d'appeler EndInvoke?
- 12. Puis-je utiliser la méthode déléguée personnalisée dans la méthode Where de Entity Framework?
- 13. MKmapView Délégué: regionDidChangeAnimated et mapViewDidFinishLoadingMap
- 14. MKMapView renvoie la latitude incorrecteDelta et longitudeDelta dans regionDidChangeAnimated
- 15. Comment accéder aux en-têtes http de réponse à partir de la méthode déléguée 'didReceiveAuthenticationChallenge'
- 16. Comment libérer l'objet transmis au protocole ou à la méthode déléguée dans Objective-c?
- 17. Expression régulière pour modifier la syntaxe déléguée à l'expression Lambda?
- 18. Atteindre la fin de la tableview sans utiliser la méthode déléguée 'numberOfRowsInSection' iphone sdk
- 19. ASIHTTPRequest: Erreur lors de la tentative d'invocation de la méthode déléguée
- 20. Comment puis-je retarder les appels de méthode?
- 21. Android: ajouter une surimpression à MapView?
- 22. Obtention de "EXC_BAD_ACCESS" lors de l'accès à une variable d'instance à partir de la méthode déléguée UITableView
- 23. NSStream lecture \ écriture en dehors de la méthode déléguée handleEvent: code événement
- 24. Android MapView - comment attacher des contrôles supplémentaires à un MapView dans la position désirée
- 25. iPhone MapView interrompu
- 26. Comment gérer les exceptions survenues dans la cible déléguée
- 27. Flex Comment retarder setStyle jusqu'à la prochaine mise à jour?
- 28. Retarder la lecture des sons à l'aide de AVAudioPlayer
- 29. cronjob retarder basé sur la sortie PHP
- 30. Retarder la charge javascript externe par secondes
remercie l'homme pour l'aide – Nanz