iPhoneとiPadは結構違う

iPad専用に作っていたアプリをiPhoneでも動くように改造しています。なんとなく簡単に出来そうな気がしてやり始めてみましたが、やってみると結構大変です。

何が大変といって、iPhoneは画面が小さすぎるのです。

横向きのアプリはつらい

iPhoneを横向きにして、上部にタイトルバー、下部にツールバーを設置すると、表示する領域の縦サイズがほとんどなくなってしまって実用に耐えません。

仕方がないので、下部のツールバーをやめて横に設置することにしたら、デフォルトのボタンがあまりにも見栄えが悪いので、ボタンの画像作りからやらないといけなくなりました。

日本語の入力もしんどい

キーボードが下から出て来て、日本語の予測変換がキーボードの上に表示されると、画面には入力欄が2行分しか表示できなくなりました。

全ての入力欄を画面に表示できないので、scrollRectToVisible:を使って自動的にスクロールさせたりしないといけません。

そのためには、キーボードの領域をUIKeyboardFrameEndUserInfoKeyを使って取得して、スクロールビューのframeを表示可能サイズにセットして、contextSizeを隠れた部分も含めた全部のビューの範囲にします。

少しはまりかけましたが、CS193p - Lecture 8 の課題で結構苦労したので、contentSizeが重要だったことを思い出しました。

ポップオーバーは使えない

ポップオーバーはiPadだけの機能ですね。たくさん使ってしまっていました。

これは、単純に通常のsegueに変えるだけでいいのでむしろiPadより実装が楽なんですが、ナビゲーションバーをつけられない画面からナビゲーションバーを付けたいテーブルビューにsegueさせる時に困りました。

テーブルビューコントローラには、ナビゲーションバーやツールバーを付けられなくて、戻るボタンを配置できないのです。

結果的に、間にナビゲーションバコントローラをかませてsegueさせることにしましたが、間にナビゲーションコントローラが入ったので、segue前のdelegateやプロパティの設定を変えないといけなくなりました。

別スレッドの処理の実行タイミングが違う? ←今ここ

カクカク対策で別スレッド処理にしている部分なんですが、iPadではちゃんと動くのにiPhoneだと動きません(涙)

デバッガでストップさせると、そのストップさせた影響でちゃんと動いてしまいます…。

最大の問題

最後に、肝心な問題がありました。

私、iPhoneもiPod touchも持ってないんです…。

実機で動かしたらきっとカクカクなんだろうな。

コメントをお書きください

コメント: 1
  • #1

    Nakita Ritz (日曜日, 22 1月 2017 06:44)


    I feel that is one of the such a lot important information for me. And i'm glad studying your article. However want to commentary on few general issues, The web site style is wonderful, the articles is really excellent : D. Just right activity, cheers