2010-10-21 6 views
0

я просто попытался добавить некоторые операторы для моего метода shouldautorotate и заметил, что он проверяет его 4 раза, что действительно имеет смысл, но даже если я не в режиме переключения с портретной на альбомную,Shouldautorotate возвращения неверное значение

возвращает портрет 3 раза, и в четвертый раз, он возвращает пейзаж, хотя мой симулятор не в ландшафте.

if(interfaceOrientation == UIInterfaceOrientationLandscapeLeft){ 
    NSLog(@"landscape left"); 
    }else if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
    NSLog(@"landscape right"); 
    }else if(interfaceOrientation == UIInterfaceOrientationPortrait){ 
    NSLog(@" portrait"); 
    }else if(interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown){ 
    NSLog(@"portrait upsidedown"); 
    } 

Любой знает почему?

ответ

1

Попробуйте ввести этот код в didAutorotate или willAutorotate. shouldAutorotate должен только возвращать ДА или НЕТ.

Я полагаю, что shouldAutorotate проверяется регулярно, тогда как didAutorotate запускается только при обнаружении сдвига ориентации.

Это код, я использую, чтобы проверить:

- (void) reOrient{ 
    if(UIInterfaceOrientationIsPortrait(self.interfaceOrientation)){ 

    } else { 

    } 
} 

То есть в методе я создал под названием reOrient, который вызывается из моего didAutorotate

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{ 
    [self reOrient]; 
} 

Просто убедитесь, что при создании нового метод, такой как reOrient, который вы также объявляете в заголовке (я забыл при запуске), как показано ниже:

- (void)reOrient; 
+0

Спасибо за помощь. Я пытаюсь найти этот метод в документации. – user281300

+0

если вы используете X-код, начните печатать - (void) didAutorotate ... и остальная часть будет отображаться. Вам не нужно ничего делать, поскольку это встроенный метод и автоматически срабатывает. Метод reOrient был обычным, созданным мной, специфичным для моего приложения, и содержит приведенный выше оператор if. –

+0

Спасибо, удалось найти его в uiviewcontroller. – user281300

Смежные вопросы