У меня есть экземпляр AVAudioPlayer
, который воспроизводит локальный аудиофайл с диска. Ход воспроизведения отражается в UIProgressView. Я пытаюсь заменить это на UISlider. Для выполнения задачи ползунок:
- двигаться в ответ на событие таймера, чтобы указать текущую позицию воспроизведения
- реагировать на ручное касание, чтобы разрешить очистку видео
Я не уверен, как сделать UISlider достаточно умным, чтобы знать, что когда началось человеческое прикосновение, он должен перестать реагировать на события таймера, а когда касание отпущено, он должен возобновить аудиоплеер в новое положение и снова начните обновление с помощью событий таймера.
Какие выходы "Отправить событие" в раскадровке я бы использовал для создания описанного выше поведения?
В настоящее время у меня есть общий обратный вызов «значение изменено».
- (IBAction)sliderChanged:(id)sender {
if(self.backgroundMusicPlayer == nil)
{
NSError* error = nil;
NSData* data = [self.audioFile data];
self.backgroundMusicPlayer = [[AVAudioPlayer alloc]initWithData:data error:&error];
[self.backgroundMusicPlayer prepareToPlay];
}
self.backgroundMusicPlayer.currentTime = self.slider.value;
[self.backgroundMusicPlayer play];
}