Пользовательский UIView не поворачивается при изменении ориентации устройства

Я создал UIView, на котором есть два элемента управления: метка и индикатор активности (вращающееся колесо), отображаемый при синхронизации устройства. Поскольку этот UIViewController должен быть доступен глобально, я добавляю его в событие FinishedLaunching приложения:

window.AddSubview(navigationController.View); окно.AddSubview(SyncSpinner.View); окно.MakeKeyAndVisible();

Я переопределяю событие shouldAutoRotate и возвращаю значение true, чтобы разрешить вращение представления с помощью устройства. Однако мне не удалось заставить этот вид вращаться. Я даже пытался вызвать событие shouldAutoRotate из события shouldAutoRotate представления navigationController, но оно все еще не вращается.

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

Спасибо.


person Neal    schedule 18.07.2010    source источник


Ответы (2)


Аналогичная вещь случилась со мной. Я не знаю почему, но iPhone отправляет сообщения автоповорота только на контроллер новейшего добавленного представления.

Обойти это можно, генерируя уведомления и отправляя их на контроллер. Используйте этот блок кода в готовом методе запуска:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver: viewController selector:@selector(changeOrientation:) name:UIDeviceOrientationDidChangeNotification object:nil];
person tadejsv    schedule 18.07.2010

По крайней мере, с TweetStation проблема заключалась в том, что мне нужно было распространять свойство вращения на всем пути от первого UIViewController. Если UIViewController верхнего уровня не поддерживал вращение, то и вложенные не поддерживали.

В TweetStation я делаю это с помощью вспомогательного класса верхнего уровня, который запускает мой контроллер панели вкладок верхнего уровня:

http://github.com/migueldeicaza/TweetStation/blob/master/TweetStation/Main.cs#L409

person miguel.de.icaza    schedule 21.07.2010