2016-12-03 2 views
1

Я использую следующий код для воспроизведения простого щелчка при нажатии кнопки.Первый случай звука задерживается

import AudioToolbox 

private var clickSound: SystemSoundID! 

func createSound(soundName: String) -> SystemSoundID { 
    var id: SystemSoundID = 0 

    let url = CFBundleCopyResourceURL(CFBundleGetMainBundle(), soundName, "wav", nil) 
    AudioServicesCreateSystemSoundID(url, &id) 

    return id 
} 

    //Load click sound. 
    clickSound = createSound("ButtonClick") 

Это работает, но в первый раз я нажимаю кнопку, звук немного задерживается. Все последующие нажатия кнопок приводят к немедленному воспроизведению звука. Это заставляет меня поверить, что звук не загружается до первого запуска.

Есть ли способ избавиться от этой задержки?

+0

Сколько звуков вам необходимо использовать в своем приложении? –

ответ

2

Это известная проблема.

При запуске вы можете сыграть небольшой тихий звук. Таким образом, звуковые процедуры будут загружены и готовы к выполнению, когда вы захотите.

AudioServicesCreateSystemSoundID((CFURLRef)[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"SILENCE" ofType:@"WAV"]], &alarm); 
AudioServicesPlaySystemSound (alarm); 
+0

Спасибо. Это именно то, что я сделал, и он отлично работает. –