iOS 5 AVAudioPlayer - как правильно остановить воспроизведение?
Я использую iOS 5 с включенной ARC. Я проигрываю запись, связанную с определенным видом, когда он отображается. Когда пользователь меняет представление, воспроизведение останавливается. Я использовал NSNotification для вызова метода -stopPlayback, который работает нормально. Проблема в том, что когда пользователь возвращается к исходному виду и нажимает на него, он продолжается там, где остановилась запись.
С отключенной ARC я мог бы использовать следующий код:
-stopPlayback
{
if([audioPlayer isPlaying])
{
[audioPlayer stop];
[audioPlayer release];
audioPlayer = nil;
}
}
Так как ARC не разрешает [выпуск аудио-проигрывателя], я не могу сбросить воспроизведение с самого начала. Я удалил [выпуск аудио-проигрывателя] и audioPlayer=nil; так как ARC будет обрабатывать его, и результатом будет воспроизведение записи там, где она остановилась после предыдущей остановки Я не вижу хороших примеров или документации от Apple о том, как перезапустить запись с самого начала, когда происходит воспроизведение. Каков наилучший способ продолжить?
2 ответа
Это решение, которое я придумал:
-stopPlayback{
if([audioPlayer isPlaying])
{
[audioPlayer stop];
audioPlayer.currentTime=0;
}
}
Запись теперь воспроизводится с самого начала, независимо от того, когда она была остановлена. Я попытался использовать [пауза audioPlayer] вместо [audioPlayer stop], из-за чего воспроизведение не воспроизводилось после начальной паузы. Похожая вещь произошла, когда я добавил 'audioPlayer=nil; (хотя я не документировал точную комбинацию). Связанный вопрос, опубликованный как часть ответа, использовал currentTime=0, но остальная часть кода не соответствовала моим потребностям. Кто-нибудь может понять, почему это не сработает? Любые дальнейшие комментарии приветствуются.
Вам все еще нужна настройка для nil
:
if([audioPlayer isPlaying])
{
[audioPlayer stop];
audioPlayer = nil;
}