私はこの主題がここSOで多くの注目を集めていることを知っていますが、「解決策」のどれも私のために働いていません。状況は次のとおりです。
iPadは私の机の上で平らで(デバイスの向きを上に向けて)、ホーム画面は完全に読みやすくなっていますが、ホームボタンは上にあります。つまり、これは「縦向き逆さま」のインターフェイスの向きを効果的に示しています。
アプリを起動します
アプリは
beginGeneratingDeviceOrientationNotifications
、加速度計が機能していることを確認するために呼び出し、方向通知が届きます。起動時に、私のアプリは「インターフェースの向き」と「デバイスの向き」の両方を照会します。結果は次のとおりです。
STARTUP ORIENTATION: INTERFACE ORIENTATION: UIInterfaceOrientationPortrait DEVICE ORIENTATION: UIDeviceOrientationFaceUp
Appleのドキュメントによると、各アプリ(インターフェース?)は縦向きで始まるので、これは理にかなっているかもしれません。これは実際に表向きであるため、デバイスの向きも正しいです。
起動直後に、最初のオリエンテーション通知が届きます。
NOTIFICATION 1: INTERFACE: UIInterfaceOrientationPortrait DEVICE: UIDeviceOrientationPortrait
繰り返しになりますが、インターフェイスの縦向き(これは私が期待するものとは逆で、ホーム画面が上下逆向きで表示されました)、デバイスも縦向きであると言われています(そうではありませんが、これは明らかにですデバイスが上向きまたは下向きのときにアプリのコンテンツを方向付ける方法を理解するための巧妙なスキーム)。
多くの人が言及しているように、別の(2つではなく1つだけの)オリエンテーション通知が続きます。
NOTIFICATION 2: INTERFACE: UIInterfaceOrientationPortrait DEVICE: UIDeviceOrientationFaceUp
インターフェイスの場合はまだ縦向き(上下逆ではない)で、デバイスの場合は上向きになります(これは正しいです)。
私のアプリはそれ自体を正しく調整し、上下逆に表示されますが、これは完全に間違っています。
iPadのホーム画面やその他のUIに表示されている、最後の既知の方向を知るにはどうすればよいですか?
これは、ウィンドウとビューだけを備えたOpenGLアプリです。UIViewControllerをミックスに追加して、これがより正確な情報を提供するかどうかを確認しましたが、それはまったく同じであり、間違っています。私はこれに苦労している開発者は私だけではないことを知っています。iPadにある多くのアプリも間違っているので、デバイスを傾けて適切な向きにする必要があります。しかし、一部のアプリはそれを正しく理解しているようですが、秘密は何ですか?