Existe-t-il un moyen simple de retarder un appel de méthode d'une seconde?
J'ai un UIImageView
qui réagit sur un événement tactile. Lorsque le toucher est détecté, certaines animations se produisent dans l'application. Au bout d'une seconde, je veux appeler une autre méthode. Dans ce cas, je ne peux pas utiliser le animationDidStop
sélecteur.
Réponses:
Référence de document
la source
Vous pouvez également utiliser un bloc
La plupart du temps, vous souhaiterez utiliser dispatch_get_main_queue, bien que s'il n'y a pas d'interface utilisateur dans la méthode, vous pouvez utiliser une file d'attente globale .
Éditer:
Version Swift 3:
De même, cela
DispatchQueue.global().asyncAfter(...
pourrait également être une bonne option.la source
dispatch_after
et appuyez sur Entréedispatch_after
, c'est vraiment un moyen très simple de le faire, de plus vous pouvez transmettre des propriétés à la méthode que vous appelez, ce qui est génial.La meilleure façon de procéder est:
vous pouvez également passer nil comme paramètre withObject.
exemple :
la source
Il y a déjà beaucoup de réponses et elles sont toutes correctes. Si vous souhaitez utiliser le,
dispatch_after
vous devriez rechercher l'extrait de code qui est inclus dans leCode Snippet Library
en bas à droite (où vous pouvez sélectionner lesUI
éléments).Il vous suffit donc d'appeler cet extrait de code en écrivant dispatch dans le code:
la source
Vous pouvez utiliser le sélecteur d'exécution après que la méthode de délai de 0,1 s soit appelée pour que le code suivant effectue cette opération.
la source
Vous pouvez également:
Dans ce cas, vous devez simuler certaines modifications de certaines vues pour que l'animation fonctionne. C'est vraiment hacky, mais j'adore les trucs basés sur des blocs. Ou résumez la réponse @mcfedr ci-dessous.
la source
Tu peux le faire
la source
Swift 2.x
Swift 3.x - et - Swift 4
ou passer un
escaping closure
la source
Il existe une solution Swift 3 de la solution vérifiée:
Et il y a la méthode
la source
Utilisation dans Swift 3
la source
REMARQUE: cela mettra en pause l'ensemble de votre thread, pas seulement la méthode unique.
Passer un appel pour dormir / attendre / arrêter pendant 1000 ms juste avant d'appeler votre méthode?
Edit: La réponse ci-dessus s'applique à la question générale "Comment puis-je retarder un appel de méthode d'une seconde?", Qui était la question posée au moment de la réponse (en fait, la réponse a été donnée dans les 7 minutes suivant la question d'origine: - )). Aucune information n'a été donnée sur la langue à ce moment-là, alors arrêtez de vous plaindre de la bonne façon d'utiliser sleep i XCode og le manque de cours ...
la source