Я просто не могу заставить UIDeviceOrientationDidChangeNotification
выстрелить.
У меня есть AppDelegate, здесь я добавляю PolyOrientationViewController
, который имеет UInavigationController
, который может толкать VerticalNavigationController
и HorizontalViewController
в зависимости от ориентации iPad.
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
ISPolyOrientationTableViewController *pvc = [[ISPolyOrientationTableViewController alloc] init];
[window addSubview:pvc.view];
[pvc release];
[window makeKeyAndVisible];
return YES;
}
Поли, Вертикальный и Горизонтальный viewController реализует:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
PolyVC, который является самым верхним ViewController, имеет следующие методы:
- (void)viewDidLoad {
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
[super viewDidLoad];
}
Имеет функцию, связанную:
- (void)didRotate:(NSNotification *)notification {
//push the related controller
}
При создании экземпляра PolyVC вызывается метод didRotate:
, с этого момента он просто прекращает генерировать UIDeviceOrientationDidChangeNotification
, я думаю.
У меня есть точка останова в методе didRotate:
, я загрузил приложение на iPad, чтобы убедиться, что это не симулятор, я создал новый проект xcode splitViewController, протестировал вращение, удалил код и вставил свой, я проверил кнопку блокировки ориентации, я попытался реализовать -(BOOL) ShouldAutoRotate…
, я не вызывал ни одного, я проверил, что info.plist указывает, что приложение поддерживает все ориентации, я попытался скопировать каждый фрагмент Код уведомления из рабочего примера, который я нашел, чтобы отсеять опечатки.
Я полностью нахожусь в этом уме :) Есть ли что-то, что я мог бы сделать, какой-то способ реализации UIViewController, не используя IB, вложив ViewControllers в ViewControllers (PolyViewController владеет UINavigationController, который владеет Vertical и HorizontalViewController) или что-нибудь, что будет заставить приложение полностью игнорировать интерфейсные уведомления о ориентации?
Я надеюсь, что кто-то может указать на мою ошибку :)
Заранее спасибо.