0

iOS 3.2 以降のデバイス (iPad と iPhone の両方) と互換性のある非常に古いアプリがあります。そして、iOS 7 と互換性を持たせるには大きな問題があります。

実際、これは、ARC、ストーリーボード、および今日私たちが喜んで遊んでいるすべての構文糖衣よりもずっと前に書かれています。そして、インターフェイスの向きの問題を理解するのに非常に苦労しています:

iPhoneの場合、アプリは横向きでのみ表示されます...メインのViewControllerには問題ありません。しかし、設定の 1 つ (UITableView を含む単純な ViewController) は常に縦向きで表示されます !!! 私が設定したプロパティと私が書いたメソッドが何であれ。

では、.plistLandscapeLeft と Right の方向のみをサポートしています。Settings View Controller には、次のメソッドがあります。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return UIInterfaceOrientationIsLandscape(interfaceOrientation) || (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPhone);
}

- (BOOL) shouldAutorotate {
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations {
    return (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)?UIInterfaceOrientationMaskLandscape:UIInterfaceOrientationMaskAll;
}

しかし、私が本当に気になるのは、表示self.interfaceOrientationすると横向き ( viewWillAppearviewDidAppearおよびviewWillLayoutSubviews) と表示されることです。

しかし、最も奇妙なのは、ステータスバーが縦向きのViewControllerの上に横向きになっていることです!!!

(もちろん、問題はデバイスとシミュレータの両方に表示されます)

したがって、誰かがその ViewController をすべてランドスケープに戻すのを手伝うことができれば。前もって感謝します!

4

1 に答える 1

0

やっと、やっと見つけました!!!

この問題は、ViewController を切り替える方法 (古い iOS 3 の方法) が原因でした (正確な理由はまだわかりません)。

したがって、ifを修正するために、メソッドpresentViewController:animated:completionが利用可能かどうかをテストし(神の祝福respondsToSelector:)、可能な場合はそれを使用します。

問題が解決しました!

于 2013-10-04T14:14:00.877 に答える