MPMoviePlayerController дает бесконечный цикл при нажатии «Готово» - PullRequest
0 голосов
/ 13 февраля 2012

Я пытаюсь заставить MPMoviePlayerController работать, но у меня странная проблема.При воспроизведении я нажимаю кнопку «Готово», и кажется, что срабатывает бесконечный вид:

2012-02-13 15: 18: 04.395 iDomsPortalDev [7376: 12203] PlayFinished.Причина: пользователь вышел 2012-02-13 15: 18: 04.395 iDomsPortalDev [7376: 12203] воспроизведение завершено.Причина: пользователь вышел 2012-02-13 15: 18: 04.395 iDomsPortalDev [7376: 12203] воспроизведение завершено.Причина: пользователь вышел

При запуске я использую следующие уведомления:

- (void) showMoviePlayer {
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willEnterFullscreen:) name:MPMoviePlayerWillEnterFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willExitFullscreen:) name:MPMoviePlayerWillExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(enteredFullscreen:) name:MPMoviePlayerDidEnterFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(exitedFullscreen:) name:MPMoviePlayerDidExitFullscreenNotification object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playbackFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];      

    id appDelegate = (iDomsAppDelegate *)[[UIApplication sharedApplication] delegate];
    //[[self navigationController] presentMoviePlayerViewControllerAnimated:[appDelegate movieController]];    
    [[appDelegate moviePlayer].view setFrame: self.view.bounds];
    [self.view addSubview:[appDelegate moviePlayer].view];
    [[appDelegate moviePlayer] setFullscreen:YES animated:YES];    
}

и следующие слушатели:

#pragma mark - Movieplayer feedback
- (void)willEnterFullscreen:(NSNotification*)notification {
    NSLog(@"willEnterFullscreen");
}

- (void)enteredFullscreen:(NSNotification*)notification {
    NSLog(@"enteredFullscreen");
}

- (void)willExitFullscreen:(NSNotification*)notification {
    NSLog(@"willExitFullscreen");
}

- (void)exitedFullscreen:(NSNotification*)notification {
    NSLog(@"exitedFullscreen");
    iDomsAppDelegate *appDelegate = (iDomsAppDelegate *)[[UIApplication sharedApplication] delegate];    
    [[appDelegate moviePlayer].view removeFromSuperview];
    [[appDelegate moviePlayer] release];
    [appDelegate setMovieController:nil];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)playbackFinished:(NSNotification*)notification {
    iDomsAppDelegate *appDelegate = (iDomsAppDelegate *)[[UIApplication sharedApplication] delegate];    
    NSNumber* reason = [[notification userInfo] objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey];
    switch ([reason intValue]) {
        case MPMovieFinishReasonPlaybackEnded:
            NSLog(@"playbackFinished. Reason: Playback Ended");         
            break;
        case MPMovieFinishReasonPlaybackError:
            NSLog(@"playbackFinished. Reason: Playback Error");
            break;
        case MPMovieFinishReasonUserExited:
            NSLog(@"playbackFinished. Reason: User Exited");
            break;
        default:
            break;
    }
    [[appDelegate moviePlayer] setFullscreen:NO animated:YES];
}

Вызывается только селектор PlayBackFinished(бесконечное количество раз), поэтому я должен сделать что-то глупое (работает в симуляторе с iOS5)

1 Ответ

0 голосов
/ 16 марта 2012

Я обнаружил проблему, она, кажется, установила полноэкранный параметр, который вызвал ее:

[[appDelegate moviePlayer] setFullscreen:YES animated:YES];
...