MrPink
MrPink

Reputation: 1371

iPhone forcing orientation after video playback

I have a problem which is doing my head in and should be so simple to resolve. Here is my code:

-(IBAction)playMovie:(id)sender{

    NSString *filepath   =   [[NSBundle mainBundle] pathForResource:@"myMovie" ofType:@"MOV"];  
    NSURL    *fileURL    =   [NSURL fileURLWithPath:filepath];  
    moviePlayerController = [[MPMoviePlayerController alloc] initWithContentURL:fileURL];  

    [[NSNotificationCenter defaultCenter] addObserver:self  
                                             selector:@selector(moviePlaybackComplete:)  
                                                 name:MPMoviePlayerPlaybackDidFinishNotification  
                                               object:moviePlayerController];  

    [self.view addSubview:moviePlayerController.view];  
    //[moviePlayerController setOrientation:UIInterfaceOrientationLandscapeLeft];
    moviePlayerController.fullscreen = YES;  
    moviePlayerController.scalingMode = MPMovieScalingModeFill;    

    [moviePlayerController play]; 

}

- (void)moviePlaybackComplete:(NSNotification *)notification  
{  

    [[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

    moviePlayerController = [notification object];  
    [[NSNotificationCenter defaultCenter] removeObserver:self  
                                                    name:MPMoviePlayerPlaybackDidFinishNotification  
                                                  object:moviePlayerController];  

    [moviePlayerController.view removeFromSuperview];  
    [moviePlayerController release];  
}  

And the orientation:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation
{
    if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
        return(YES);
    }

    if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
        return([moviePlayerController isFullscreen]);
    }




    return(NO);

}

This works as desired at first. The orientation is initially forced to portrait, then the movie plays and landscape allows the movie to rotate and be viewed in landscape. Then after done is clicked and the movie is finished the interface is left in landscape. I need it to be forced back to portrait mode... i've seen solutions like

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationPortrait];

which now seems to be deprecated as of ios 4.0

Ideally as soon as the movie finished method fires it should auto rotate to portrait!

any solutions?

Upvotes: 0

Views: 586

Answers (1)

Bruno Guidolim
Bruno Guidolim

Reputation: 11

Try this:

[[NSNotificationCenter defaultCenter] addObserver:self  
                                         selector:@selector(moviePlaybackComplete:)  
                                         name:MPMoviePlayerWillExitFullscreenNotification  
                                         object:moviePlayerController];

Upvotes: 1

Related Questions