Приложение Tabbar Nav, позволяющее вращать одно представление, в то время как другие не - PullRequest
1 голос
/ 02 июля 2010

У меня есть приложение панели вкладок, в котором у меня есть 3 различных представления, каждое с собственным контроллером представления.

В штрих-коде на вкладке у меня есть это, чтобы обрабатывать вращение.

#import "RotatingTabBarController.h"

@implementation RotatingTabBarController

    // Override to allow orientations other than the default portrait orientation.
    - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

      return [self.selectedViewController shouldAutorotateToInterfaceOrientation:interfaceOrientation]; 
 }
@end

Затем в контроллере второго вида, который я хочу вращать, в зависимости от ориентации устройства, у меня есть:

// Override to allow orientations other than the default portrait orientation.
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

   return YES;
 }

И для двух других видов, которые я не хочу вращать, у меня установлен этот метод.

// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
 // Return YES for supported orientations
 return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

ПРОБЛЕМА: так что это прекрасно работает в представлении 1 и представлении 3, когда вы поворачиваете устройство, они остаются в портретном режиме, который требуется. Когда в представлении 2 я поворачиваюсь в альбомную ориентацию, представление делает, как ожидалось, и поворачивает в альбомную ориентацию. НО при нажатии на вкладку «Вид 1» или «Вид 3» в режиме «Пейзаж» в режиме «Вид 2» Вид 1 и Вид 3 находятся в альбомном режиме.

Я не могу понять, как заставить их работать в портретной ориентации, даже если вид 2 поворачивается к пейзажу.

Кто-нибудь знает, как это сделать?

1 Ответ

1 голос
/ 02 июля 2010

Существует большое обсуждение [1] по этому вопросу, начиная с 2008 года и до настоящего времени (посмотрите на комментарии на нескольких страницах) - в общем, это выглядит как

application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;

или

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

или

[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];

позволит вам принудительно установить альбомную ориентацию - вы захотите сделать это, когда пользователь вернется к вашим ландшафтным представлениям автоматически.

[1] Приложение для iPhone в ландшафтном режиме, системы 2008 года

...