ориентация iPad не возвращается правильно - PullRequest
1 голос
/ 16 января 2012

Я в основном запускаю этот код:

UIInterfaceOrientation statusBarOrientation = [[UIApplication sharedApplication] statusBarOrientation];

if(statusBarOrientation == UIInterfaceOrientationPortrait){
     NSLog(@"orientation is portrait");
}

Однако, независимо от фактической ориентации в симуляторе или моем iPad, он печатает «ориентация - портрет». Попытка NSLog statusBarOrientation как% d также возвращает 1 независимо от ориентации.

Я застрял, это мой делегат приложения, мой контроллер представления и класс, в котором я нуждаюсь, и это то же самое. Все 4 ориентации устройства поддерживаются в моих настройках info.plist / target.

У кого-нибудь есть верный способ выяснить ориентацию интерфейса или почему у меня не работает? Спасибо

Ответы [ 3 ]

3 голосов
/ 16 января 2012

, если вы не хотите использовать Уведомление для ориентации. Затем используйте метод ниже.

это пример только альбомной ориентации в iPad и портрета в iPhone ...

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
    {
        if(interfaceOrientation==UIInterfaceOrientationLandscapeLeft ||  
         interfaceOrientation==UIInterfaceOrientationLandscapeLeft)
            return YES;
        else
            return NO;
    }
    else
    {
        return (interfaceOrientation == UIInterfaceOrientationPortrait);
    }
}
1 голос
/ 16 января 2012

Вы можете зарегистрироваться для уведомлений об изменении ориентации:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];   
[[NSNotificationCenter defaultCenter] addObserver:self
                            selector:@selector(didRotate:)
                            name:@"UIDeviceOrientationDidChangeNotification" 
                            object:nil];

- (void)didRotate:(NSNotification *)notification
{   
   UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

if ((orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)) {
         // DO STUFF
}
else if (orientation == UIDeviceOrientationPortrait) {
          //DO MORE STUFF 
}

}
0 голосов
/ 16 января 2012

В настоящее время вы возвращаете ориентацию строки состояния. Вместо этого получите ориентацию устройства: [[UIDevice currentDevice] orientation]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...