Existe uma maneira fácil de atrasar uma chamada de método por 1 segundo?
Eu tenho um UIImageView
que reage a um evento de toque. Quando o toque é detectado, algumas animações acontecem no aplicativo. Depois de um segundo, quero chamar outro método. Nesse caso, não posso usar o animationDidStop
seletor.
ios
objective-c
iphone
cocoa-touch
uikit
obrigado
fonte
fonte
Respostas:
Referência do Documento
fonte
Você também pode usar um bloco
Na maioria das vezes, você desejará usar dispatch_get_main_queue, embora, se não houver interface do usuário no método, você possa usar uma fila global .
Editar:
Versão Swift 3:
Da mesma forma,
DispatchQueue.global().asyncAfter(...
também pode ser uma boa opção.fonte
dispatch_after
e pressione enterdispatch_after
, essa é realmente uma maneira super direta de fazer isso, além de você poder passar propriedades para o método que você está chamando, o que é ótimo.A melhor maneira de fazer é:
você também pode passar nulo como com o parâmetro Object.
exemplo:
fonte
Já existem muitas respostas e todas estão corretas. No caso de você querer usar,
dispatch_after
procure o snippet que está incluídoCode Snippet Library
na parte inferior direita (onde é possível selecionar osUI
elementos).Então, você só precisa chamar esse snippet escrevendo dispatch no código:
fonte
Você pode usar o seletor de execução para depois que o método de atraso de 0,1 s for chamado para o código a seguir para fazer isso.
fonte
Você também pode:
Nesse caso, você precisa falsificar algumas alterações em algumas visualizações para obter o trabalho de animação. É realmente hacky, mas eu amo o material baseado em bloco. Ou encerre a resposta @mcfedr abaixo.
fonte
Você consegue fazer isso
fonte
Swift 2.x
Swift 3.x - e - Swift 4
ou passar um
escaping closure
fonte
Existe uma solução Swift 3 na solução verificada:
E existe o método
fonte
Use no Swift 3
fonte
NOTA: isso pausará todo o thread, não apenas o método.
Fazer uma chamada para suspensão / espera / parada por 1000 ms antes de chamar seu método?
Editar: A resposta acima se aplica à pergunta geral "Como posso atrasar uma chamada de método por 1 segundo?", Que foi a pergunta feita no momento da resposta (na verdade, a resposta foi dada dentro de 7 minutos da pergunta original: - )). Nenhuma informação foi dada sobre o idioma naquele momento; portanto, pare de reclamar sobre a maneira correta de usar o sono no XCode e na falta de aulas ...
fonte