6

初期化した最初の UIViewController で (コードで) iPad アプリが interfaceOrientation を検出するのに問題があります。実際、application.statusBarOrientation をトレースすると、横向きで起動した場合でも 1 (UIInterfaceOrientationPortrait) が返されます。

最初の UIViewController で self.interfaceOrientation をトレースすると、viewWillDisappear になるまで 1 のままです...残念ながら遅すぎます!

以下にいくつかのコードを示します (見るべきものはあまりありませんが)。

私のappDelegateにはこれがあります:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{    
     // show loading screen first
     [window addSubview:loadingScreenViewController.view];
     [window makeKeyAndVisible];

     NSLog(@"applicationDidBecomeActive:statusBarOrientation = %d", application.statusBarOrientation);
     return YES;
}

ステータスバーが横向きであることがはっきりとわかりますが、1(縦向き)をトレースします...そして最初のView Controllerにはこれがあります:

- (void)viewDidLoad
{
    [super viewDidLoad];
     NSLog(@"self.interfaceOrientation = %d", self.interfaceOrientation);
}

ランドスケープモードでも1をトレースします。

何か案は?ここで困った!

ありがとう :)

:-ジョー

4

2 に答える 2

2

答えは次のとおりです...やや:(AppleDev Forumsから):....「アプリは常にデバイスが縦向きであるかのように読み込まれ、デバイスが本当に横向きである場合、アプリはデバイスが回転したことを通知されます。これは、ペン先とコードが1つの方向でUIを作成するだけでよいようにするために行われます。それ以外の場合は、ペン先ごとに2つのUIレイアウトが必要になる場合があります。」....それは私が望んでいた答えではありませんが、残念ながらiOSはそのように機能します!

于 2010-08-04T15:35:42.680 に答える
0

アプリ デリゲートは で何を報告しapplicationDidFinishLaunchingますか? 正しい値が報告されれば、いつでもデリゲートにアクセスして向きを確認できるからです。

于 2010-08-02T07:37:25.887 に答える