Я реализую AVAudioPlayer и функцию быстрой перемотки вперед. Я сделал две кнопки с жестами, изображениями и эффектами свечения. В настоящее время, когда я нажимаю на ускоренную перемотку вперед, он сначала передает игровой элемент на 10 секунд, а затем играет так же, как в обычном режиме, хотя я все еще нажимаю кнопку. Я хочу реализовать его точно так же, как в стандартном приложении Iphone/Ipod.Быстрая перемотка назад и перемотка вперед в AVAudioPlayer
ответ
Одним из возможных решений является реализация повторяющегося действия с помощью NSTimer
. Посмотрите на UIButton Touch and Hold.
Вместо этого вы можете использовать AVPlayer
и изменить стоимость курса при касании. Измените его на -2 для перемотки назад и 2 для быстрой перемотки вперед. И не забудьте изменить скорость до 1 при касании внутри/снаружи.
РЕДАКТИРОВАТЬAVPlayer
«s rate
свойство поддерживает значения вне 0.0
- диапазона 1.0
ЕСЛИ
связанный проигрыватель элемент возвращает YES для AVPlayerItem свойств canPlaySlowForward или canPlayFastForward
https://developer.apple.com/documentation/avfoundation/avplayer/1388846-rate
'Свойство' rate 'AVPlayer' позволяет только значения 0.5 для воспроизведения с половинной скоростью до 2.0 для воспроизведения с двойной скоростью. Таким образом, ваше решение идеально подходит для быстрой перемотки вперед, но не для перемотки назад. Вы должны использовать 'NSTimer', который устанавливает' currentTime' для поддержки перемотки. –
@StefanArn есть ли у вас образец кода? –
@JenelEjercitoMyers Ну это просто. Вместо свойства 'rate', которое не работает для перемотки, вы просто устанавливаете время дорожки прямо так:' [self.audioPlayer setCurrentTime: (self.audioPlayer.currentTime - 1.0f)]; 'Если вы хотите, чтобы пользователь может нажимать кнопку перемотки в течение более длительного времени и постоянно перематывать назад, вы просто вызываете 'setCurrentTime' снова и снова. Одним из решений было бы запустить «NSTimer», который делает это до тех пор, пока пользователь нажимает кнопку перемотки следующим образом: «[NSTimer scheduleTimerWithTimeInterval: 0.2 target: self selector: @selector (rewind :) userInfo: nil repeatts: YES];' –
вы использовали AVAudioPlayer.currentTime p roperty ??? –