#ios #ios4 #mpmovieplayercontroller #uislider #nsnotification
#iOS #ios4 #mpmovieplayercontroller #пользовательский интерфейс #nsnotification
Вопрос:
У меня странная проблема с MPMoviePlayerController в iOS.
У меня есть MPMoviePlayerController со стилем управления none. Добавлен мой собственный пользовательский интерфейс для поиска вперед / назад в фильме.
Настройте уведомления, чтобы видеть изменения в состоянии воспроизведения.
После установки player.currentPlaybackTime в новое значение состояние воспроизведения переходит в MPMoviePlaybackStateSeekingForward или MPMoviePlaybackStateSeekingBackward и остается в этом состоянии.
Я ожидал бы, что когда поиск прекратится (найдена новая позиция), и проигрыватель продолжит воспроизведение в обычном режиме, состояние воспроизведения вернется к MPMoviePlaybachStatePlaying, но это не так.
Это нормальное поведение или я что-то упускаю?
Комментарии:
1. Это ненормальное поведение. Вы используете удаленный поток или воспроизводите локальный ресурс? При воспроизведении того же контента с использованием стандартного проигрывателя (например, через веб-сайт) все ли работает так, как ожидалось?
2. не имеет значения, использую ли я локальный ресурс или удаленный поток. В обоих случаях я получаю состояние воспроизведения 4 или 5 (поиск вперед / назад). Я бы ожидал, что уведомление MPMoviePlayerPlaybackStateDidChangeNotification с возвратом playbackstate к 1 (воспроизведение).
3. Вы пробовали разные файлы содержимого? Я бы предложил попробовать это на примере BipBop: devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8
4. Уже пробовал несколько разных файлов. Но я попробую.
5. @Пока я действительно не застрял на этом. Я собрал несколько примеров кода , которые воспроизводят эту проблему. Пример кода воспроизводит случайную песню с iPod. Смотрите информацию об отладке для состояния воспроизведения. Спасибо.
Ответ №1:
Проблема заключается в непрерывности свойства UISlider. Установите значение нет, и вы будете уведомлены, когда состояние изменится с прямого / обратного на воспроизведение.
self.playerControlsView.slider.continuous = НЕТ;
Я думаю, проблема в том, что когда для свойства continuous установлено значение YES. Ползунок продолжит действие по перемещению, которое предоставляет пользователь, и не вызовет изменение состояния. И, следовательно, состояние остается прямым / обратным. Я не очень уверен в этом, но ответ находится где-то в этих строках.
Надеюсь, это кому-то поможет 🙂