2014-12-04 2 views
0

일부 가로 방향을 차단하려고합니다 (UIViewController). 나는 그것을 관리하기 위해 많은 다른 것을 읽었지만 잘 작동하는 해결책을 찾지 못했습니다. 때마다 오리엔테이션이 있어야한다고해도 차단되지 않습니다. 심지어 그와 가로 회전을 차단해도 화면이 회전 함

- (BOOL)shouldAutorotate { 
    return NO; 
} 

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
} 

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { 
    return UIInterfaceOrientationPortrait; 
} 

은,보기가 풍경으로 회전 :

나는 풍경 회전이없는 UIViewController에서 가로 방향을 차단하기 위해 다음과 같은 코드가 있습니다.

내가 뭔가를 놓쳤습니까?

+0

방향을 차단할 수있는 사용자 지정 탐색 컨트롤러를 사용해야합니다. –

답변

1

UIViewControllerUINavigationController 안에 있습니까? 또는 TabBarController? 이 경우 UIViewControllerUINavigationController에 해당 호출을 전달하기 때문에 UINavigationController의 하위 클래스를 만들어서이 메소드를 구현하고 탐색 컨트롤러의 스택에있는 어떤보기 컨트롤러가 순환을 허용하고 순환을 허용하는지 확인해야합니다 네가 원하는 것.

- (NSUInteger)supportedInterfaceOrientations 
{ 
    if ([self.visibleViewController class] == [MyViewController class]) { 
     return UIInterfaceOrientationMaskAllButUpsideDown; 
    } else { 
     return UIInterfaceOrientationMaskPortrait; 
    } 
} 

당신은뿐만 아니라 탐색 컨트롤러에서 문제의 UIViewController에 물어 시도 할 수 있지만, 이것은 어떤 이유로도 나를 위해 작동하지 않았다

이것은 내가 프로젝트에서 그것을 한 방법이다.

- (NSUInteger)supportedInterfaceOrientations 
{ 
    return [[self.viewControllers lastObject] supportedInterfaceOrientations]; 
} 

나머지 방법에도 동일한 방법을 사용합니다.

+0

당신이 말했듯이, 내 ViewController는 사용자 정의 NavigationController 안에 있습니다. 나는 당신의 제안을 시도하지만 어쨌든 회전합니다. – tbaranes

+0

다른 뷰 컨트롤러에 shouldAutorotate {return NO}를 추가하려고 시도했을 수 있습니까? 그러나 이것이 필연적이라고 나는 생각하지 않는다. – Miki

+0

너무 효과가 없었습니다. 사용할 수있는 방향에주의를 기울이는 것처럼 보이고이 메서드를 사용하지 마십시오 (호출 된 경우에도 그냥 체크 아웃하십시오). – tbaranes