2

起動時の奇妙な問題を除いて、正しく動作する iPad アプリがあります。オリエンテーションに関するいくつかの質問と回答を読みましたが、それでも困惑しています。

ルート ビュー コントローラーは、3 つのタブを持つ UITabBarController です。2 つのタブにはカスタム ビュー コントローラーがあり (1 つは UIViewController に基づいており、もう 1 つは UITableViewController に基づいています)、どちらもこの起動方向の問題に悩まされています。3 番目のタブは、UINavigationController に埋め込まれたカスタム UITableViewController です。

さて、ここで問題です。アプリを縦向きで起動すると、すべてうまくいきます。横向きで起動すると、3 番目のタブが完全に機能します。ただし、次の場合でも、最初の 2 つのタブは縦向きで表示されます。

  1. ステータス バーの向きが横向き (画面全体に広がる) として正しく表示されます。
  2. タブ バー ビューは、タブが中央に配置された横向きとして正しく表示されます。
  3. すべてのビューは、すべての向きの shouldAutorotateToInterfaceOrientation に対して YES を返します。

ビュー コントローラーの viewWillAppear で [self interfaceOrientation] または [[UIApplication sharedApplication] statusBarOrientation] を呼び出すと、3 番目のタブのビュー コントローラーは 3 (横向き) を報告しますが、最初の 2 つのビュー コントローラーはステータス バーがはっきりと表示されているにもかかわらず 1 (縦向き) を報告します。風景!

iPad を縦向きに回転させてから横向きに戻すと、3 つのタブのビューはすべて正しく回転します (上記のメソッドは予想どおり 3 を返します)。

また、他のタブをタップしてからタブ #1 または #2 に戻ると、iPad 自体を回転させなくても正しく回転するようになりました。

私は何が欠けていますか?

4

6 に答える 6

3

サポートされているDeviceOrientationsを「myApp.plist」に追加する必要があります。

このリストをクリックし、「サポートされているインターフェイスの向き」キーを追加して、サポートされているインターフェイスの向きを追加します。これで問題は解決しました。

詳細については、このリンクをたどり、「アプリケーションバンドル」のセクションにアクセスしてください。http://developer.apple.com/iphone/library/documentation/General/Conceptual/iPadProgrammingGuide/CoreApplication/CoreApplication.html

于 2010-05-27T08:24:47.480 に答える
1

デバイスの向きは何もないところから始まることがわかりました。また、不明の場合はYESを返す必要があります。これにより、デバイスを正しい起動方向に向けることができます。

これは、このメッセージをレガシーメッセージまで伝播するために使用したコードです。

- (BOOL)shouldAutorotate{
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation;
    if (orientation == UIDeviceOrientationUnknown) return YES;
    BOOL result = [self shouldAutorotateToInterfaceOrientation:orientation];
    return result;
}

オリエンテーション==UIDeviceOrientationUnknownの場合、YESを返すことに注意してください。これで読み込みの問題が修正されました。

于 2012-09-26T20:33:06.380 に答える
1

私は最終的に私の答えを見つけました.LoadingControllerでこれを忘れてしまいました.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
        return YES;
}
于 2010-09-10T09:59:01.380 に答える
0

アプリ デリゲートの applicationDidFinishLaunchingWithOptions: メソッドで、View Controller のビューをウィンドウに追加した後、次を追加します。

[myViewController viewDidLoad];

必要に応じて、これにより shouldAutorotateToInterfaceOrientation: メソッドの呼び出しがトリガーされます。

于 2011-02-10T20:16:41.597 に答える
0

解決策は、キーを追加することです

UISupportedInterfaceOrientation

起動時にサポートされているインターフェイスの向きを指定する文字列の配列を持つ Info.plist に、これらは次のとおりです。

  • UIInterfaceOrientationPortrait
  • UIInterfaceOrientationPortraitUpsideDown
  • UIInterfaceOrientationLandscapeLeft
  • UIInterfaceOrientationLandscapeRight

ただし、混乱を招く可能性のある次の問題があります:少なくとも SDK 3.2 および XCode 3.2.4 の iPad シミュレーターでは、インストール時に (少なくとも一部の) Info.plist 設定がキャッシュされているか、更新されていないように見えることがわかりました。アプリ。つまり、上記のキーを追加し、シミュレーターにアプリをインストールして起動しても効果はありませんでした。ただし、シミュレーターからアプリを削除すると、新しくインストールされたアプリが指定どおりに動作するという問題が修正されました。

于 2010-10-14T11:43:21.060 に答える
0

これを試してみてください

- (BOOL)shouldAutorotateToInterfaceOrientation: UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown);<br>
}
于 2010-09-16T10:07:52.070 に答える