iPadでActionSheetを表示する時に気を付けること

のえる のえる 2019.08.21

iOSアプリの開発で、複数ある選択肢から一つを選ぶUIとして「ActionSheet」があります。
これは非常にわかりやすいUIなのですが、iPadではうまく動かないことがあります。
今回はそんな、ちょっとニッチな情報を書いていこうと思います。

環境

今回の環境は下記の通りです。

 

Swift 5
Xcode 10.3
iOS 12.4

iPhoneでは動くがiPadでは動かないコード

実際に問題となるActionSheetの出し方を見てみましょう。

 

特に問題は無いように思われるプログラムコードですし、実際にこういう記述を書かれる方は多いと思います。
事実、このプログラムを iPhone で動かした場合、何もエラーは起きません。

ただし iPad で動かした場合 「libc++abi.dylib: terminating with uncaught exception of type NSException」 というエラーでアプリケーションがクラッシュします。

対処方法

iPhoneにはなく、iPadにある機能の一つで PopoverPresentationController というものがあります。
これが指定されていないためにクラッシュしてしまうエラーのようですので、指定してあげれば解決します。

 

補足

UIDevice.current.userInterfaceIdiom で起動しているデバイスが判断できます

さいごに

このエラーはシミュレータでも発生しますので、気になる人は試してみると良いと思います。
他にもiPadのみの機能として、SplitViewやSlideOverなどもありますし、
画面サイズなどによっても大きく異なることがあると思います。

 

また iPadアプリはiPhoneの画面を大きくしたもの という誤認識をされている方も見受けられますが、UI/UXにおいて大きく異なりますし、開発工数も変わってきてしまいます。

 

ユニバーサル(iPhone/iPadの両方対応したもの)アプリを作る際には気を付けていきましょう。

スポンサーリンク

POPULAR

のえる

書いた人

のえる

Full-stack Developer / Guitarist