이 답변을 검색했지만 내 문제를 해결 한 항목을 찾을 수 없습니다.supportedInterfaceOrientations가 iOS 7과 함께 호출되지 않았습니다.
여기에 문제가 있습니다. 사용자 정의 UINavigationController가 있습니다. supportedInterfaceOrientations
메서드가 호출되면 rootViewController (세로 만 지원)에서 호출됩니다. 그러나 다른 ViewController를 스택에 푸시 할 때이 메서드는 푸시 된 ViewController에서 호출되지 않습니다 (모두 거꾸로 지원합니다).
저는 을 viewDidLoad
-method에서 호출하여 해결했지만 문제를 해결하는 좋은 방법은 아닙니다.
저를 도와 주시면 감사하겠습니다.
다음은 두 번째 viewController에서 구현 한 코드입니다.
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
[[[UIApplication sharedApplication] delegate] setGlobalOrientationMask:UIInterfaceOrientationMaskAllButUpsideDown];
return UIInterfaceOrientationMaskAllButUpsideDown;
}
else {
[[[UIApplication sharedApplication] delegate] setGlobalOrientationMask:UIInterfaceOrientationMaskAll];
return UIInterfaceOrientationMaskAll;
}
}
나는 johnMa의 솔루션은 대부분의 응용 프로그램에 대한 잘 작동합니다 생각하지만, 내 경우에는, 내가 생각 특별한 문제가, 그러나 그것은 좋은 일이라면 나는 지금 혼자 (확실하지 그것을 해결하지만, 그것은 작동한다).
내 navigationController-delegate에 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
메서드를 구현했습니다.
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
if (DEF_SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7")) {
if ([viewController respondsToSelector:@selector(supportedInterfaceOrientations)]) {
[viewController supportedInterfaceOrientations];
}
}
}
나는 이것이 동일한 문제로 다른 사람들을 도울 수 있기를 바랍니다.
이 도움이되지만이, 세로에서 가로로 내있는 navigationController에 제 1 회전 통화 supportedInterfaceOrientations를 회전 할 때 지금 발생 한 문제는, 그러나 회전이 수행되지 않으며, 단지 그것을 두 번 회전 할 때 가로 방향으로 회전이 올바르게 수행되었습니다 –
첫 번째/두 번째 시간 문제에 대한 해결책을 찾았습니까? 나는 같은 문제를 겪고있다. –