ДОБАВЛЕНО: Я вижу, что мой вопрос часто просматривают без голосов, поэтому я решил, что вы, ребята, не получаете то, что ищете. Перенаправляем вас на вопрос, на который есть действительно хороший ответ о Как изменить ориентацию в iOS6
Особые требования к изменению ориентации: Ограниченное вращение
Голосование приветствуется :)
Я создал новый проект из шаблона Master Detail и пытаюсь запустить его с альбомной ориентацией. Как вы знаете
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
метод устарел, и мы должны использовать
- (NSUInteger)supportedInterfaceOrientations
и / или
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
Вот мой код:
- (NSUInteger)supportedInterfaceOrientations {
NSLog(@"supported called");
return UIInterfaceOrientationMaskAll;//Which is actually a default value
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
NSLog(@" preferred called");//This method is never called. WHY?
return UIInterfaceOrientationLandscapeRight;
}
Как видите, я пытаюсь вернуть альбомную ориентацию предпочтительным методом, но он никогда не вызывается. p.s. в документации указано:
Обсуждение Система вызывает этот метод при полноэкранном представлении контроллера представления. Вы реализуете этот метод, когда ваш контроллер представления поддерживает две или более ориентации, но контент лучше всего отображается в одной из этих ориентаций.
Если ваш контроллер представления реализует этот метод, то при представлении его вид отображается в предпочтительной ориентации (хотя позже его можно повернуть на другое поддерживаемое вращение). Если вы не реализуете этот метод, система представляет контроллер представления, используя текущую ориентацию строки состояния.
Итак, возникает вопрос: почему метод prefferredOrientation никогда не вызывается? И как нам обрабатывать разные ориентации в разных контроллерах ?. Спасибо! P.S не помечайте вопрос как повторяющийся. Я исследовал все подобные вопросы, и на мой нет ответа.