xCode - Как остановить одно действие, когда другое происходит - PullRequest
1 голос
/ 20 марта 2011

У меня есть приложение, которое говорит словами. Однако, когда нажимается слово B, я хочу остановить слово A. Есть ли способ сделать это? Это мой код для произнесения слов:

-(IBAction)sayIt:(id)sender
{
//NSLog(@"%s", __FUNCTION__);
CFBundleRef mainBundle = CFBundleGetMainBundle();
FlashCardsAppDelegate *mainDelegate = (FlashCardsAppDelegate *)[[UIApplication sharedApplication] delegate];
CFURLRef soundFileURLRef;
soundFileURLRef= CFBundleCopyResourceURL (mainBundle, (CFStringRef)[mainDelegate soundFile], CFSTR("caf"), NULL);   
UInt32 soundID;
AudioServicesCreateSystemSoundID(soundFileURLRef, &soundID);
AudioServicesPlaySystemSound(soundID);
}   

Ответы [ 2 ]

2 голосов
/ 20 марта 2011

вы можете использовать AVAudioPlayer в качестве члена класса, вызывать player.stop и player.play, чтобы остановить и запустить аудио.если вам нужно изменить звук после остановки плеера, используйте InitWithData

2 голосов
/ 20 марта 2011

Глядя на документы, похоже, что вы не можете остановить его воспроизведение оповещения до его завершения.

Но вы можете использовать обратный вызов, чтобы сказать, когда он закончил играть, чтобы избежать воспроизведения двух звуков. Посмотрите на:

AudioServicesAddSystemSoundCompletion

Обсуждение Поскольку системный звук может воспроизводиться в течение нескольких секунд, возможно, вы захотите узнать, когда он закончил играть. Например, вы можете подождать, пока системный звук не закончится, прежде чем воспроизводить другой звук.

и

AudioServicesSystemSoundCompletionProc

Обсуждение Поскольку системный звук может воспроизводиться до 30 секунд, функция AudioServicesPlaySystemSound выполняется асинхронно (то есть немедленно возвращается). Этот обратный вызов вызывается после завершения воспроизведения указанного системного звука. Вы можете использовать этот обратный вызов, например, чтобы избежать воспроизведения второго звука, пока первый звук еще воспроизводится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...