MPMoviePlayerController выдает ошибки ТОЛЬКО в универсальном приложении

Мое приложение воспроизводит видео в полноэкранном режиме при запуске приложения. Все работает без нареканий с 3.0 на 4.1.

Однако, если я скомпилирую тот же код для универсального приложения, оно будет работать на iPad, но больше не будет работать на iPhone (симуляторе).

Кто-нибудь решил эту проблему?

Вот код:

if ([self respondsToSelector:@selector(presentMoviePlayerViewControllerAnimated:)]) {
  videoPath = [[NSBundle mainBundle] pathForResource:@"portrait" ofType:@"mov"];
  videoURL = [NSURL fileURLWithPath:videoPath];

  MPMoviePlayerController *aMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
  self.moviePlayerController = aMoviePlayerController;
  [aMoviePlayerController release];  

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
  [moviePlayerController.view setFrame:self.view.bounds];
  [self.view addSubview:moviePlayerController.view];

  moviePlayerController.controlStyle = MPMovieControlStyleNone;
 } else {
  //OS < 3.2
  videoPath = [[NSBundle mainBundle] pathForResource:@"landscape" ofType:@"mov"];
  videoURL = [NSURL fileURLWithPath:videoPath];

  MPMoviePlayerController *aMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
  self.moviePlayerController = aMoviePlayerController;
  [aMoviePlayerController release];

  moviePlayerController.movieControlMode = MPMovieControlModeHidden;
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerContentPreloadDidFinishNotification object:nil];
 }

И вот ошибка:

-[MPMoviePlayerControllerOld view]: нераспознанный селектор отправлен экземпляру

0x7924470

Даже если я попытаюсь предотвратить это вот так...

if ([moviePlayerController respondsToSelector:@selector(view)]) {
   [moviePlayerController.view setFrame:self.view.bounds];
  }

... ошибка все еще выдается.


person Joseph Tura    schedule 12.10.2010    source источник


Ответы (2)


Я получил ту же ошибку несколько дней назад. Нужно было только изменить базовый SDK с 3.2 на 4.1 Надеюсь, это поможет.

person marcio    schedule 12.10.2010
comment
Да, это исправило это. Спасибо, Марсио! - person Joseph Tura; 12.10.2010

У меня пока нет объяснения ошибки. Но это, похоже, работает (нужно проверить на старых устройствах):

if ([self respondsToSelector:@selector(presentMoviePlayerViewControllerAnimated:)]) {
        videoPath = [[NSBundle mainBundle] pathForResource:@"portrait" ofType:@"mov"];
        videoURL = [NSURL fileURLWithPath:videoPath];

        /* NEW */
        MPMoviePlayerViewController *aMoviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:videoURL];
        aMoviePlayerViewController.moviePlayer.view.frame = self.view.bounds;
        aMoviePlayerViewController.moviePlayer.controlStyle = MPMovieControlStyleNone;
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerLoadStateDidChangeNotification object:nil];
        [aMoviePlayerViewController.moviePlayer play];
        [self.view addSubview:aMoviePlayerViewController.view];
        self.moviePlayerController = aMoviePlayerViewController;


    } else {
        //OS < 3.2
        videoPath = [[NSBundle mainBundle] pathForResource:@"landscape" ofType:@"mov"];
        videoURL = [NSURL fileURLWithPath:videoPath];

        MPMoviePlayerController *aMoviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:videoURL];
        self.moviePlayerController = aMoviePlayerController;

        aMoviePlayerController.movieControlMode = MPMovieControlModeHidden;
        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startVideo:) name:MPMoviePlayerContentPreloadDidFinishNotification object:nil];

        [aMoviePlayerController release];
    }

Если бы я только мог вспомнить, почему я сделал это по-другому в первую очередь;)

person Joseph Tura    schedule 12.10.2010