¿Hay una manera fácil de retrasar una llamada de método por 1 segundo?
Tengo un UIImageView
que reacciona en un evento táctil. Cuando se detecta el toque, algunas animaciones suceden en la aplicación. Después de un segundo, quiero llamar a otro método. En este caso, no puedo usar el animationDidStop
selector.
ios
objective-c
iphone
cocoa-touch
uikit
Gracias
fuente
fuente
Respuestas:
Referencia de documento
fuente
También podrías usar un bloque
La mayoría de las veces querrá usar dispatch_get_main_queue, aunque si no hay una interfaz de usuario en el método, podría usar una cola global .
Editar:
Versión Swift 3:
Igualmente,
DispatchQueue.global().asyncAfter(...
también podría ser una buena opción.fuente
dispatch_after
y presione enterdispatch_after
, esta es realmente una forma súper sencilla de hacerlo, además de que puede transferir propiedades al método que está llamando, lo cual es genial.La mejor manera de hacerlo es:
También puede pasar nil como con el parámetro Object.
ejemplo:
fuente
Ya hay muchas respuestas y todas son correctas. En caso de que desee usar el
dispatch_after
, debe buscar el fragmento que se incluye dentro de laCode Snippet Library
parte inferior derecha (donde puede seleccionar losUI
elementos).Entonces solo necesita llamar a este fragmento escribiendo despacho en código:
fuente
Puede usar el selector de ejecución para después de que el método de retraso de 0.1 segundos se llame para que el siguiente código haga esto.
fuente
Tú también puedes:
En este caso, debe simular algunos cambios en alguna vista para que la animación funcione. Es realmente hacky, pero me encantan las cosas basadas en bloques. O finalice la respuesta de @mcfedr a continuación.
fuente
Puedes hacerlo
fuente
Swift 2.x
Swift 3.x - & - Swift 4
o pasar un
escaping closure
fuente
Hay una solución Swift 3 de la solución marcada:
Y ahí está el método
fuente
Uso en Swift 3
fuente
NOTA: esto pausará todo su hilo, no solo el método.
¿Llamar a dormir / esperar / detener 1000 ms justo antes de llamar a su método?
Editar: La respuesta anterior se aplica a la pregunta general "¿Cómo puedo retrasar una llamada al método por 1 segundo?", Que era la pregunta que se hizo en el momento de la respuesta (de hecho, la respuesta se dio dentro de los 7 minutos de la pregunta original: - )). No se proporcionó información sobre el idioma en ese momento, así que amablemente deje de quejarse sobre la forma correcta de usar sleep i XCode og la falta de clases ...
fuente