Ориентация экрана не меняется, несмотря на вызовы shouldAutorotateToInterfaceOrientation

Я хотел бы добавить функцию изменения ориентации экрана для различных представлений в моем приложении. Прочитав различные руководства, я реализовал метод shouldAutorotateToInterfaceOrientation в каждом из своих контроллеров представления и заставил каждый из них возвращать yes, а также регистрировать вызов в консоль, например:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    NSLog(@"shouldAutorotateToInterfaceOrientation called");
    return YES;
}

Когда я запускаю это на симуляторе и меняю ориентацию, я получаю сообщение журнала, но на экране ничего не меняется. Я пытался найти, как это могло произойти, но везде, где я смотрел, говорится, что проблемы связаны с тем, что метод не вызывается, хотя в моем случае это так. Есть идеи?

Спасибо


person benwad    schedule 05.10.2011    source источник
comment
Вы уверены, что каждый контроллер представления на экране возвращает YES из этого? Даже один контроллер представления, который не поддерживает вращение, может предотвратить вращение всего объекта.   -  person Lily Ballard    schedule 05.10.2011
comment
Вы пытались перезапустить Xcode? это случилось со мной однажды, и это помогло. если нет, вы можете создать категорию в делегате приложения, чтобы переопределить метод автоматического поворота. если перезапуск и очистка не работают, скажите мне, и я покажу вам, как переопределить это в делегате приложения.   -  person Tomer Even    schedule 05.10.2011
comment
Не могли бы вы рассказать мне о структуре контроллера представления? вы считаете, что это singleViewcontroller? или sth viewController внутри другого viewController?   -  person bitmapdata.com    schedule 05.10.2011
comment
Если вы видите NSLog, попробуйте также вывести полученную ориентацию и убедитесь, что она действительно отличается.   -  person EricLeaf    schedule 05.10.2011
comment
Спасибо за комментарии. Я просмотрел значение interfaceOrientation в каждом из этих выходных данных журнала, и они кажутся правильными, однако с интерфейсом ничего не происходит. Я реализовал этот метод и заставил его возвращать YES в каждом подклассе UIViewController в проекте, просто чтобы быть уверенным. Кроме того, этот метод вызывается (судя по выходу журнала) каждый раз, когда я меняю ориентацию, ЗА ИСКЛЮЧЕНИЕМ, когда я перехожу в портретную (не вверх ногами), что странно.   -  person benwad    schedule 06.10.2011


Ответы (2)


Мне нужно знать, что в вашем коде вы используете все представления по коду или .xib.

Также вам нужно установить свойство авторизации для каждого компонента...

person Nilesh Kikani    schedule 05.10.2011

Решил это: в коде был инициализирован прямой объект UIViewController, и изменение его на мой собственный простой базовый класс решило проблему. Спасибо за совет!

person benwad    schedule 06.10.2011