Есть ли простой способ отложить вызов метода на 1 секунду?
У меня есть, UIImageView
что реагирует на событие касания. При обнаружении касания в приложении происходят некоторые анимации. Через одну секунду я хочу вызвать другой метод. В этом случае я не могу использовать animationDidStop
селектор.
ios
objective-c
iphone
cocoa-touch
uikit
Спасибо
источник
источник
Ответы:
Ссылка на документ
источник
Вы также можете использовать блок
Большую часть времени вы захотите использовать dispatch_get_main_queue, хотя, если в методе нет пользовательского интерфейса, вы можете использовать глобальную очередь .
Редактировать:
Версия Swift 3:
Точно так же
DispatchQueue.global().asyncAfter(...
может быть хорошим вариантом.источник
dispatch_after
и нажмите enterdispatch_after
, это действительно очень простой способ сделать это, плюс вы можете передать свойства вызываемому методу, и это здорово.Лучший способ сделать это:
Вы также можете передать nil как параметр withObject.
пример :
источник
Ответов уже много, и все они правильные. Если вы хотите использовать его,
dispatch_after
вы должны искать фрагмент, который находится внутриCode Snippet Library
справа внизу (где вы можете выбратьUI
элементы).Так что вам просто нужно вызвать этот фрагмент, написав dispatch в коде:
источник
Вы можете использовать селектор выполнения после того, как метод задержки 0,1 сек вызывается для следующего кода, чтобы сделать это.
источник
Вы также можете:
В этом случае вы должны подделать некоторые изменения в некоторых видах, чтобы получить анимацию. Это действительно хакерство, но мне нравятся блочные вещи. Или оберните ответ @mcfedr ниже.
источник
Ты можешь сделать это
источник
Swift 2.x
Swift 3.x - & - Swift 4
или передать
escaping closure
источник
Существует решение Swift 3 из проверенного решения:
И есть метод
источник
Используйте в Swift 3
источник
ПРИМЕЧАНИЕ: это приостановит всю цепочку, а не только один метод.
Сделать вызов в режим сна / ожидания / остановки на 1000 мс перед вызовом вашего метода?
Изменить: приведенный выше ответ относится к общему вопросу «Как я могу отложить вызов метода на 1 секунду?», Который был задан во время ответа (фактически ответ был дан в течение 7 минут после исходного вопроса: - )). В то время не было предоставлено никакой информации о языке, поэтому, пожалуйста, прекратите ссориться о правильном способе использования сна в коде отсутствия классов ...
источник