iOS Автоповорот вида сначала

Я работаю над приложением для iOS, которое должно работать как в альбомной, так и в портретной ориентации, за исключением одного вида, который всегда должен быть в альбомной ориентации. Так что я:

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

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

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

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

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

- (NSUInteger)supportedInterfaceOrientations

но он никогда не вызывается.

Заранее спасибо!


person mario595    schedule 15.02.2013    source источник


Ответы (1)


shouldAutorotateToInterfaceOrientation: устарело в iOS 6.0. Вместо этого переопределите методы supportedInterfaceOrientations и preferredInterfaceOrientationForPresentation.

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

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

person memmons    schedule 15.02.2013
comment
Извините, я плохо объяснил. Я запускаю свое приложение на устройстве iOS 5, и каждый раз, когда я показываю представление, которое хочу показывать только в альбомной ориентации, вызывается метод shouldAutorotateToInterfaceOrientation, но если я нахожусь в портретной ориентации, несмотря на то, что он возвращает НЕТ, представление отображается в портретной ориентации. Если я поворачиваюсь к альбомной ориентации, он возвращает YES, и вид поворачивается, а если я снова поворачиваюсь к портрету, он возвращает NO, и вид остается в альбомной ориентации, как и должно быть. Моя проблема в том, что в первый раз, когда метод возвращает НЕТ, мне нужно, чтобы представление повернулось в портрет, а не оставалось в портрете. - person mario595; 18.02.2013