#iphone #ios #objective-c #mpmovieplayercontroller
#iPhone #iOS #objective-c #mpmovieplayercontroller
Вопрос:
У меня есть одна небольшая проблема, связанная с MPMoviePlayerController, у меня есть ссылка, которая воспроизводит фильм, когда я нажимаю на эту кнопку фильма, однако, когда я нажимаю на другую кнопку, приложение завершает работу, мне нужно найти, как определить, что фильм воспроизводится или получает какой-либо ответ
Комментарии:
1. Код и / или журналы сбоев могли бы помочь.
2. хорошо, позвольте мне изменить вопрос: у меня запущен фильм на симуляторе iPhone, мне нужно найти в другой функции, воспроизводится фильм wheater или нет
Ответ №1:
Чтобы расширить ответ @ Saurabh, вы можете проверить, воспроизводится ли видео с помощью
if(player.playbackState == MPMoviePlaybackStatePlaying)
{
// is Playing
}
где MPMoviePlaybackState
определяется как
enum {
MPMoviePlaybackStateStopped,
MPMoviePlaybackStatePlaying,
MPMoviePlaybackStatePaused,
MPMoviePlaybackStateInterrupted,
MPMoviePlaybackStateSeekingForward,
MPMoviePlaybackStateSeekingBackward
};
typedef NSInteger MPMoviePlaybackState;
Комментарии:
1. В Swift для доступа к перечислению, упомянутому выше, используйте MPMoviePlaybackState. Воспроизведение — смотрите мой полный ответ ниже.
Ответ №2:
Есть две части, обычно используемые в комбинации;
Зарегистрируйтесь для MPMoviePlayerPlaybackStateDidChangeNotification
например, вот так:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(MPMoviePlayerPlaybackStateDidChange:)
name:MPMoviePlayerPlaybackStateDidChangeNotification
object:nil];
Затем в обработчике уведомлений вы можете подробно проверить фактическое состояние — например, вот так:
- (void)MPMoviePlayerPlaybackStateDidChange:(NSNotification *)notification
{
//are we currently playing?
if (movieController_.playbackState == MPMoviePlaybackStatePlaying)
{ //yes->do something as we are playing...
}
else
{ //nope->do something else since we are not playing
}
}
Вы, безусловно, также можете использовать свойство PlaybackState без обработки уведомления, которое сигнализирует о его изменениях. Тем не менее, в большинстве случаев это подходящее место для этого.
При удалении / остановке воспроизведения вашего фильма не забудьте удалить обработчик уведомлений, например, вот так:
[[NSNotificationCenter defaultCenter] removeObserver:self
name:MPMoviePlayerPlaybackDidFinishNotification
object:nil];
Ответ №3:
Вы можете проверить playbackState
свойство MPMoviePlayerController. Обратитесь по этой ссылке —
Ответ №4:
В swift способ реализации ответа @ ZKV7 таков:
if(player.playbackState == MPMoviePlaybackState.Playing)
{
// is Playing
}
где MPMoviePlaybackState
находится перечисление:
enum MPMoviePlaybackState : Int {
case Stopped
case Playing
case Paused
case Interrupted
case SeekingForward
case SeekingBackward
}
Смотрите документы Apple для получения дополнительной информации о MPMoviePlayerController.
Ответ №5:
чтобы проверить, находится ли видеопроигрыватель в состоянии воспроизведения или нет в SWIFT
@IBAction func btnPressPlay(sender: AnyObject) {
if videoPlayerViewController.moviePlayer.playbackState == MPMoviePlaybackState.Playing
{
self.videoPlayerViewController.moviePlayer.stop()
}
else {
self.videoPlayerViewController.moviePlayer.play()
}
}
Ответ №6:
typedef NS_ENUM(NSInteger, AVPlayerTimeControlStatus) {
AVPlayerTimeControlStatusPaused,
AVPlayerTimeControlStatusWaitingToPlayAtSpecifiedRate,
AVPlayerTimeControlStatusPlaying
} NS_ENUM_AVAILABLE(10_12, 10_0);
if(self.player.timeControlStatus == AVPlayerTimeControlStatusPlaying)
{
// is Playing
}