OSDN Ticket Archive


Ticket #38903

iOS版 iPadを縦向きにするとメイン画面がスクリーンからはみ出す

登録: 2019-01-28 00:24 最終更新: 2019-01-31 23:41

報告者:
yknk
担当者:
yknk
チケットの種類:
バグ
状況:
完了
コンポーネント:
MIDITrail Ver.1.2.x for iOS
マイルストーン:
Version 1.2.2 for iOS (完了済み)
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
なし

詳細

メイン画面はランドスケープ(横方向)の表示にしか対応していないため、 iPadを縦向きにしたままメイン画面を表示すると、本来は90度回転してスクリーン内に表示されるはずである。 しかし、メイン画面が90度回転されずに横方向のまま表示され、メイン画面の右側がスクリーンの外にはみ出してしまう。 本現象は iPad mini4 / iOS 12 で発生している。第3世代iPadとiPhoneでは発生していない。

チケットの履歴

2019-01-28 00:24 更新者: yknk
  • 新しいチケット "iOS版 iPadを縦向きにするとメイン画面がスクリーンからはみ出す" が作成されました
2019-01-28 00:24 更新者: yknk
コメント

原因

メイン画面で supportedInterfaceOrientations が呼び出されず、ランドスケープ固定とならない。 Webの情報によると、iOS11以降のiPadからマルチタスク対応が有効になったことが原因と考えられる。 現状のプロジェクト設定は、"Requires full screen"にチェックが付いていないため、 マルチタスクに対応するとみなされている。

参考ページ

supportedInterfaceOrientations not called in iPad
https://stackoverflow.com/questions/35274428/supportedinterfaceorientations-not-called-in-ipad

iOS で Landscape モードのみサポートする
https://qiita.com/codelynx/items/e68252153bcaed9a3784

2019-01-28 00:25 更新者: yknk
コメント

対策1 プロジェクト設定

プロジェクト設定

Targets / MIDITrail / General / Deployment Info / Status Bar Style にて、 "Requires full screen"にチェックマークをつける。

対策2 リファクタリング

本不具合の対策としては、本来必要なかったが、以下修正を施しておく。

MIDITrailApp

UINavigationController* で定義されていたメンバを、MTNavCtrl* に置き換えた。 MTNavCtrl は UINavigationController のラップクラス。

MIDITrailApp::createViews

メンバのナビゲーション制御オブジェクトを生成するとき、UINavigationController ではなく MTNavCtrl から生成するように修正。

MTNavCtrl

UINavigationController のラップクラスとして、ナビゲーション制御クラスを追加。 将来、回転制御のために shouldAutorotate や supportedInterfaceOrientations を オーバーライドする必要が出たときのために追加しておく。

MTMonitorViewCtrl::supportedInterfaceOrientations

MIDI IN モニタ画面は、横長のみに対応(UIInterfaceOrientationMaskLandscape)ではないため、 全方向への対応(UIInterfaceOrientationMaskAll)に修正。 この誤りにより、何らかの不具合が発生しているわけではないが、念のため修正しておく。

MTTabBarCtrl::shouldAutorotateToInterfaceOrientation

廃止になったメソッドを削除。

2019-01-31 23:41 更新者: yknk
  • 解決法なし から 修正済み に更新されました
  • 状況オープン から 完了 に更新されました

添付ファイルリスト

添付ファイルはありません