shouldAutorotateToInterfaceOrientation не работает

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

добавив:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return YES; } 

для ВСЕХ моих viewControllers, не выполняет работу.

Во время Debug я вижу, что этот метод вызывается, но он просто не работает! не в симуляторе, не в устройстве, не в Iphone, не в Ipad!

Я искал некоторые ответы на форуме и видел несколько советов по использованию:

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown ); } 

Не работал,

добавив:

  [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

а также

  [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 

к моему viewDidLoad и viewDidUnload соответственно тоже не работали.

Я потерян .. Любая помощь будет!

просто еще одна информация … все мои представления относятся к типу UIControl, так как мне нужен TuchUpInside для работы.

Предложите свою помощь.

Убедитесь, что все ваши родительские представления имеют autoresizesSubviews = YES. Возможно, вам понадобится сделать это в коде, если вы не установили пружины и распорки в IB для всех своих просмотров.

Указание руководства по построителю интерфейса:

Важно: в файле nib Cocoa, если вы не устанавливаете какие-либо пружины или распорки для вашего представления в Interface Builder, но затем используйте метод setAutoresizingMask:, чтобы добавить поведение автосохранения во время выполнения, ваше представление может по-прежнему не показывать правильное поведение авторезистации. Причина заключается в том, что Interface Builder отключает автоматизацию родительского представления в целом, если у этих детей нет пружин и распорок. Чтобы снова включить поведение автосохранения, вы должны передать YES в метод setAutoresizesSubviews: родительского представления. Поступая таким образом, детские представления должны автоматически настраиваться.

Пара других вещей, о которых нужно знать:

  1. UINavigationController будет только авторотировать, если его controller корневого представления также настроен на авторотирование.

  2. UITabBarController будет только авторотировать, если все его controllerы представлений настроены на авторотирование.

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { UIInterfaceOrientation des=self.interfaceOrientation; if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) //iPad { if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown)//ipad-portairait { } else//ipad -landscape { } } else//iphone { UIInterfaceOrientation des=self.interfaceOrientation; if(des==UIInterfaceOrientationPortrait||des==UIInterfaceOrientationPortraitUpsideDown) //iphone portrait { } else //iphone -landscape { } } return YES; } 

Для каких iOS вы строите? Это было устаревшим в iOS 6.0. (Вместо этого вы должны переопределить методы supportedInterfaceOrientations и preferInterfaceOrientationForPresentation.)

Также вы можете вызвать shouldAutorotate в classе UIViewController:

https://developer.apple.com/library/ios/documentation/uikit/reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/shouldAutorotate


Убедитесь, что вы проверили Ориентации поддерживаемого интерфейса на вкладке «Summery» в настройках проекта (выберите название проекта в «Навигаторе проектов» на самом верху).

Если вы не выбрали ориентации, которые хотите использовать здесь, то симулятор / iphone не позволит экрану изменять ориентацию.

У меня была эта проблема, но она работала в iOS6, но не в iOS5. Оказывается, у меня было представление в моей раскадровке, что я еще не сделал class viewcontroller.

… и последнее, но не менее важное: убедитесь, что вы не активировали настройку «Ориентация портретной ориентации заблокирована» на вашем тестовом устройстве (конечно, не относится к симулятору), это отключит rotation в любом приложении, независимо от того, что shouldAutorotateToInterfaceOrientation должно быть shouldAutorotateToInterfaceOrientation возвращается.

Interesting Posts

Разделить строку на слова несколькими разделителями

Скорость интернета падает при загрузке

Как аннулировать сеанс пользователя, когда он дважды регистрируется с одинаковыми учетными данными

Что означает «промежуточный результат в кешировании»?

Установка профиля конфигурации на iPhone – программно

Weird ошибка в 'tar', не включая файлы с именем .__ init__.py

hibernate: LazyInitializationException: не удалось инициализировать прокси-сервер

Windows 7 и Vista UAC – программатически запрашивает повышение в C #

Почему в предложении DEFAULT может быть только один столбец TIMESTAMP с CURRENT_TIMESTAMP?

Vimperator: использование внешнего редактора (например, vim) для редактирования текста переполнения стека

Получите доступ к адресу электронной почты в OAuth ExternalLoginCallback из Facebook v2.4 API в ASP.NET MVC 5

почему публикация на странице facebook «пользователь не разрешил приложение»,

Как изменить ссылочное действие внешнего ключа? (поведение)

AngularJS – UI-router – Как настроить динамические представления

Есть ли способ сделать R звуковой сигнал / воспроизвести звук в конце скрипта?

Давайте будем гением компьютера.