Одно из моих представлений является a UITableView
который действует как делегат к AVAudioPlayer
и эта таблица по существу играет звуки при выборе определенной строки с опциями повторить звук после его законченного проигрывания.
Однако я заметил что, если я выбираю ячейку с повторением НА для определенного звука и затем просматриваю путем прокрутки UITableView
для выбора другого звука это не будет звонить audioPlayerDidFinishPlaying
(и поэтому не повторение), пока прокрутка не остановилась. Как только я прекращаю прокручивать, это повторяется очень хорошо. Или если я не прокручиваю вообще, это повторяется очень хорошо.
Что могло происходить во время прокрутки что UITableView
больше не действует как делегат и вызов audioPlayerDidFinishPlaying
? Какие-либо мысли?
Хотя в документации это четко не указано, я подозреваю, что вызов audioPlayerDidFinishPlaying
откладывается в основном потоке (выделено мной жирным шрифтом):
AVAudioPlayer класс позволяет вам играть звук в любом аудиоформате, доступном в iPhone OS. Вы используете делегата для обрабатывать прерывания (например, входящий телефонный звонок) и обновить пользовательский интерфейс, когда звук закончил играть . Методы делегата для класса AVAudioPlayer являются описано в AVAudioPlayerDelegate Справочник по протоколу.
Пока есть события для обработки, например события прокрутки, вызов ожидает в основном потоке.