2014-02-24 2 views
2

이 질문에 투표하기 전에 이미 stackoverflow에서 사용할 수있는 모든 솔루션을 구현하려했음을 유의하십시오. 여기에 문제가 있습니다 :MPMoviePlayerViewController를 닫은 후 ViewController 자동 회전

내 응용 프로그램은 세로 모드에서만 실행됩니다. 조경에 있어야하는 유일한 것은 비디오 플레이어입니다. 사용자가 내 TableViewCell에 탭하면 코드 블록이 호출됩니다

MPMoviePlayerViewController *moviePlayer = [[MPMoviePlayerViewController alloc] initWithContentURL:videoUrl]; 
    [self presentMoviePlayerViewControllerAnimated:moviePlayer]; 

그 후, 사용자에게 세로 및 가로 모드에서 비디오를 볼 수있는 기능을 제공해야합니다. 작업이 끝나면 모든 것이 인물 모드로 돌아갑니다. 가로 모드에있는 동안 비디오가 끝날 때 사용자가 를 도청 할 때 또는 "완료" 버튼 -

- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window 
{ 
    NSUInteger orientations = UIInterfaceOrientationMaskPortrait; 

    if ([[self.window.rootViewController presentedViewController] isKindOfClass:[MPMoviePlayerViewController class]]) { 
     orientations = UIInterfaceOrientationMaskAllButUpsideDown; 
    } 

    return orientations; 
} 

모든 것을 한 가지를 제외하고 괜찮 그것으로 : 내 AppDelegate.m에서 코드 블록을 호출하려고했습니다 , 내보기 컨트롤러 너무 가로 모드로 나타납니다.

그 외에도 많은 다른 방법을 시도해 봤지만 아무것도 작동하지 않습니다.

나는 어떤 도움도 기뻐할 것입니다!

+0

http://stackoverflow.com/questions/21911151-이 부분은'MPMoviePlayerController' 구현의 버그 인 것으로 보입니다. – Till

답변

1

감사합니다. @Shubham - Systematix는 the answer입니다.

내가해야 할 일을했을 그 모든 AppDelegate에서이 방법을 제외하고 autorotating에 관련된 모든 코드를 제거했다 : 내가 한 때

- (NSUInteger) application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window { 
    if ([[window.rootViewController presentedViewController] isKindOfClass:  [MPMoviePlayerViewController class]]) 
    { 
     //NSLog(@"in if part"); 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    } 
    else 
    { 
     //NSLog(@"in else part"); 
     return UIInterfaceOrientationMaskPortrait; 
    } 
} 

이 모든 것이 마법처럼 일!