2011-08-03 1 views
1

私はまだ診断できないという非常に奇妙な問題があります。iPad向きの動作に一貫性がない - 各起動時に変更されますか?

iOSアプリケーション(ユニバーサルバイナリ)では、iPad 4.3で実行すると、起動時の向きが矛盾します。

アプリケーションデリゲートは、スプラッシュスクリーン(UIViewController)をメインウィンドウに追加してから削除し、アプリのプライマリビューを追加します。このプライマリビューは問題です。時間の約半分は、横向きに正しく読み込まれ、残りの半分は縦に表示されます(ステータスバーとキーボードの両方が正しく表示されます)。

私は、コードやシミュレータ/デバイスの向きを変更していないときに、起動時の方向が変わる理由について少し迷っています。

私はUIInterfaceOrientationLandscapeLeftとUIInterfaceOrientationLandscapeRightはInfo.plistの中のiPadのための唯一のサポートの向きとして設定し、すべてのビューコントローラは、以下を使用しています:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    // Return YES for supported orientations 

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
     // The device is an iPad running iPhone 3.2 or later. 
     if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight) { 
      return YES; 
     } 

    } else { 
     // The device is an iPhone or iPod touch. 
     if (interfaceOrientation == UIInterfaceOrientationPortrait) { 
      return YES; 
     } 

    } 

    return NO; 
} 

誰もがこれで私を助けることはできますか?ステータスバーとキーボードは風景の中に常にある場合

乾杯、

オリー

+0

問題を修正しました。 iPadがビューを追加したり削除したりしていなかったことが分かりました。私はスプラッシュビューをウィンドウのrootViewControllerとして追加し、それを削除し、rootViewControllerとしてプライマリビューを追加していました。 これを解決するには、ウィンドウのrootViewControllerとしてナビゲーションコントローラ(navigationBarHidden = YESを指定)を追加し、ナビゲーションコントローラのルートとしてスプラッシュ画面を追加します。次に、プライマリビューをスタックにプッシュします。 iPadが私のオリジナルの方法を好まなかった理由はまだ分かりませんが、この回避策は私にとっては効果的です。 – ollyb303

答えて

0

は問題は方法... shouldAutoにすべきではありません。これは、viewDidLoad内にある可能性があります。また、以下を試してください:project-info.plistで、 "Initial interface orientation"を左右に横長に設定し、プロジェクトを "クリーン"にして実行してください。

+0

ユニバーサルバイナリで、iPad/iPhone用の初期インターフェイスの向きには別のオプションはないので、これはiPhoneのUIを破る予定です(このアプリケーションはiPhoneのポートレートです)。それでも、テストとして、私はそれを試みたが、問題を解決しません。問題を解決するためにviewDidLoadで何ができますか? – ollyb303

関連する問題