2012年10月30日火曜日

LandscapeのiPhoneアプリがiOS6のiPadで動かない。その3

本件,Apple Developer Technical Supportに問い合わせしました。


回答:
After looking over the sample, I have concluded that this behavior is a bug.  
Until the application is resized to 2x, all touch events are mistakenly being routed to UIStatusBarAdornmentWindow, a hidden class that is part of the windowing machinery.


バグであると結論されたとのこと。そのままBug Reportに届けてくれとのことなので,そちらに登録しました。

また返答がきしだい更新します。

LandscapeのiPhoneアプリがiOS6のiPadで動かない。
LandscapeのiPhoneアプリがiOS6のiPadで動かない。その2


2013/2/23 追記
上記、まだ返事が来ていませんが、別の対処法を見つけました。


プロジェクトナビゲータのプロジェクト名
↓
TARGETのプロジェクト名
↓
Status BarのVisibility
Hide during application launchのチェックを入れる


これで動くようになりました。

2012年10月26日金曜日

LandscapeのiPhoneアプリがiOS6のiPadで動かない。その2

昨日の件,暫定的にでもなんとかできないか考えました。

とりあえず,アプリ開始後の1View目が通ればいけるはずと思い,
最初に表示されるViewの前にひとつ余分にViewをかませてみました。

流れとしてはこんな感じです。
アプリ起動→余分なView(Portrait)→最初のView(Landscape)

余分なViewのViewControllerを継承し,viewDidAppearメソッドのなかで最初のViewを呼び出す感じです。

これにより,アプリ起動時はportraitで起動し,"最初のView"に移った段階でlandscapeに変更されます。

結果としては,正しく反応するようになりました。

ただシミュレータで動かしてみると起動直後にViewが縦と横に遷移しているのがわかり,
見苦しいです。

もっとスマートな方法があるといいのですが・・・。
一応つたない英語でAppleにも問い合わせのメールを送っているので,
良い返事がきたらここに記載します。


10/30 返答が来ました。

2012年10月25日木曜日

LandscapeのiPhoneアプリがiOS6のiPadで動かない。

完全に詰まりました。

今朝あるiPhoneのアプリをリジェクトされました。
テストの結果,最初の画面で全く反応しないことがあるとのこと。

そんなはずは・・・と思いながら,テストの内容にiOS6のiPadが入っていたので,
そういえばこの環境は試していなかったと思い動かしてみると,
確かに全く反応しませんでした。

条件を確かめたところ,
・このアプリを含め,Landscape(横長)表示のアプリで起こる
・iOS6のiPadシミュレータでのみ再現
・iOS6のiPhone,iOS5のiPadでは正常に動く
・iOS6のiPadでも,一度x2を押してスクリーンサイズを変えると動く
 (しかもそのあとx1を押して元に戻しても動く)
・アプリをテスト用にportrait設定にすると正常に反応する

環境
・Xcode 4.5.1
・Deployment Target 5.1

一応対応するビューコントローラーには以下のコードを書いています。


- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

-(BOOL)shouldAutorotate
{
    return YES;
}

- (NSUInteger)supportedInterfaceOrientations
{
 return UIInterfaceOrientationMaskLandscapeRight;
}



ここから仮説ですが,問題の環境ではボタン等Viewの座標が取得できていないのでは・・・。
x2とかで再度デバイスが座標を計算した結果動くようになったみたいな・・・。

どなたか解決法をご存知でしたらコメント頂けないでしょうか。

10/26追記 暫定対策