2013-02-15 2 views
0

Я работаю над ios-приложением, которое должно работать как в пейзаже, так и в портрете, за исключением одного вида, который должен быть всегда в ландшафте. Итак, у меня есть:iOS Автоматическое вращение зрения сначала

-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft); 
} 

Если я обед мое приложение в ландшафтном режиме, и получить к этой точке зрения и повернуть устройство (IPad), этот метод вызывается и вернуться ложным, поэтому интерфейс не вращается, хорошая вещь.

НО, если я нахожусь в портрете и получаю это представление, этот метод вызывается и возвращает ложь, однако ориентация не изменяется. В этом контексте, если я поворачиваю устройство на пейзаж, метод возвращает true, и интерфейс вращается правильно, и если я попытаюсь снова повернуть на портрет, этот метод вернет false, и интерфейс останется в ландшафте.

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

Кроме того, я попытался с

- (NSUInteger)supportedInterfaceOrientations 

, но он никогда не дозвонились.

Заранее благодарен!

ответ

0

shouldAutorotateToInterfaceOrientation: обесценивается в iOS 6.0. Вместо этого замените методы supportedInterfaceOrientations и preferredInterfaceOrientationForPresentation.

Из документов на preferredInterfaceOrientationForPresentation

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

+0

Извините, я не очень хорошо себя объяснил. Я запускаю свое приложение на устройстве iOS 5, и каждый раз, когда я показываю представление, которое я хочу показывать только в ландшафте, метод должен быть вызван AutorotateToInterfaceOrientation, но если я нахожусь в портрете, несмотря на то, что он возвращает NO, вид отображается на портрете. Если я повернусь к пейзажу, он вернет YES, и вид повернется, и если я снова повернусь к портрету, он вернет NO, и вид останется в ландшафте так, как должен. Моя проблема в том, что в первый раз, когда метод возвращает NO, мне нужно, чтобы представление поворачивалось к портрету, а не оставалось в портрете. – mario595