Swift - Как добавить задержку для вибрации

Я использую этот код внутри моей функции motionBegan. И когда я встряхиваю свое устройство, оно вибрирует. Есть ли способ добавить задержку, чтобы вибрация начиналась, например, через 1 секунду?

    AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))

person Volkan Elçi    schedule 02.12.2016    source источник
comment
Поместите его в рассылку с задержкой   -  person Santosh    schedule 02.12.2016
comment
Эта ссылка может оказаться полезной: stackoverflow.com/questions/37801436/   -  person Ramy Al Zuhouri    schedule 02.12.2016


Ответы (2)


Используйте НОД dispatch_after. (Самый простой способ — с моей функцией delay, показанной здесь: https://stackoverflow.com/a/24318861/341994 .)

person matt    schedule 02.12.2016
comment
@RamyAlZuhouri Да, это так. Я включил версию функции delay, адаптированную для Swift 3. В любом случае, after DispatchQueue по-прежнему dispatch_after замаскирована! - person matt; 02.12.2016
comment
@matt абсолютно прав. Обратите внимание, что Apple унифицировала API отправки, чтобы сделать их более естественными в Swift 3. Если вы используете Swift 3 и выше, вам следует переключиться на новый синтаксис DispatchQueue, который я показал в своем ответе. Он делает то же самое, но это правильный API для дальнейшего использования. - person par; 02.12.2016

Для Swift 3 и выше используйте DispatchQueue:

DispatchQueue.main.asyncAfter(.now() + 1.0) {
    AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
}
person par    schedule 02.12.2016