В моем приложении я хочу вызвать некоторый метод в CCScene myscene в случае вращения устройства (изменение ориентации). Я отключил авторотацию (потому что я хочу, чтобы этого не произошло).Как подписаться на событие Ориентация устройства (не ориентация интерфейса)?
Проблема заключается в следующем: я хочу изменить гравитацию в сцене в зависимости от ориентации устройства. Мой код:
-(void) onEnter
{
[super onEnter];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notification_OrientationWillChange:) name:UIApplicationWillChangeStatusBarOrientationNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notification_OrientationDidChange:) name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
}
-(void) onExit
{
//[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillChangeStatusBarOrientationNotification object:nil];
//[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
}
-(void)notification_OrientationWillChange:(NSNotification*)n
{
orientation = (UIInterfaceOrientation)[[n.userInfo objectForKey:UIApplicationStatusBarOrientationUserInfoKey] intValue];
}
-(void)notification_OrientationDidChange:(NSNotification*)n
{
if (orientation == UIInterfaceOrientationLandscapeLeft) {
b2Vec2 gravity(0, -10);
world->SetGravity(gravity);
}
if (orientation == UIInterfaceOrientationLandscapeRight) {
b2Vec2 gravity(0, 10);
world->SetGravity(gravity);
}
}
Но в этом случае я могу получать уведомления только в случае авторотации включен (если он отключен, устройство на самом деле не изменить его в строке состояния ориентации) Можете ли вы мне помочь.?
Добавлен недостающий '' ''. – Macarse
Использование ориентации устройства слишком чувствительно, оно изменится на портрет при 45 градусах по горизонтали. – danfordham
Вот почему это называется ** ориентация устройства **, а не ** ориентация интерфейса **. Мобильное устройство может очень сильно изменить свою ориентацию в соответствии с тем, как оно выполняется. Люди, заинтересованные в ориентации интерфейса, должны использовать свойство UIViewController :) – nacho4d