supportInterfaceOrientations не вызывается с iOS 7
Я искал ответ на это, но не могне могу найти ничего, что решило бы мою проблему.
Так вот'С проблемой: у меня есть пользовательский UINavigationController, при созданииsupportedInterfaceOrientations
метод вызывается на rootViewController (поддерживает только портрет). Но при вставке другого ViewController в стек этот метод неВызывается на нажатой ViewController (поддерживает все, но в обратном порядке).
Я решил это, позвонив[self supportedInterfaceOrientations]
вviewDidLoad
-метод, но я думаю, чтоЭто не хороший способ решить проблему.
Я надеюсь, что вы можете помочь мне в этом вопросе.
Вот'Мой код я реализовал во втором 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 должно нормально работать для большинства приложений, но в моем случаеЭто особая проблема, я думаю, но теперь я решил ее сам (не уверен, если этоЭто хорошо, но это работает).
Я реализовал- (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];
}
}
}
Я надеюсь, что это может помочь другим с той же проблемой.