Странное поведение ползунка поиска фильма iOS MPMoviePlayercontroller

уже много раз я сталкиваюсь со странным поведением ползунка поиска при поиске вперед или назад в потоковых фильмах с использованием MPMoviePlayerController. Симптомы:

. Вы начинаете жест поиска на ползунке, а кнопка ползунка следует за пальцем. . Когда ползунок отпускается, он возвращается к начальной точке жеста и перемещается к точке, где жест был завершен. . Затем воспроизведение продолжается с выбранного времени фильма.

Это, конечно, визуально раздражает, хотя с функциональностью все в порядке. Это еще хуже на iOS 7.

Спасибо за долгожданную помощь.


person OskeeAR    schedule 19.09.2013    source источник


Ответы (1)


Возможно, немного поздно отвечать на этот вопрос, но, поскольку я наткнулся на это в поиске Google, возможно, это поможет кому-то еще.

Я столкнулся с таким поведением с помощью AVPlayer и обнаружил, что причина в наблюдателе времени, который продолжал работать во время очистки. Наблюдатель за временем отвечал за обновление положения скруббера в зависимости от текущего времени воспроизведения. Таким образом, как только жест заканчивал перемещение ползунка, наблюдатель времени перемещал ручку ползунка обратно туда, где, по его мнению, было воспроизведение до того, как действие очистки обновляло часы воспроизведения.

Мое решение состояло в том, чтобы временно удалить на этот раз наблюдателя сразу после начала очистки и воссоздать его после окончания очистки.

Когда начинается очистка:

if (scrubberTimeObserver) {
    [player removeTimeObserver:scrubberTimeObserver];
    scrubberTimeObserver = nil;
}

Обратите внимание, что вам нужно знать имя вашего наблюдателя времени, чтобы убедиться, что вы удаляете правильный.

По окончании очистки:

scrubberTimeObserver = [player addPeriodicTimeObserverForInterval:CMTimeMakeWithSeconds(interval, NSEC_PER_SEC)
                                                            queue:dispatch_get_main_queue()
                                                       usingBlock:^(CMTime time) {
                                                           [weakSelf syncScrubber];
                                                       }
                       ];
person timgcarlson    schedule 24.10.2013