iOS

[Swift]iPadのActionSheet表示でクラッシュする問題

投稿日:2017年11月1日 更新日:

はじめに

こんにちは、nukkyです。
私は普段iPhoneアプリの開発を主に行っているのですが
慣れか油断かiPadでの確認をおろそかにしてしまい、
クラッシュバグの存在に長い間気づかないでいたので
戒めつつ備忘録としてここに残したいと思います。

エラー内容

エラー原因

まずはサンプルコード
ボタンをタップしたらUIAlertControllerで
ActionSheetを表示するサンプルです。

このソースを実行するとiPhoneでは問題なく表示されますが
iPadで実行すると以下のクラッシュ発生してしまいます。。。

結論を述べると、

UIAlertControllerでActionSheetを表示する際に
popoverPresentationControllerの
sourceViewを指定しないとクラッシュします!!!

というわけで上記ソースを少し修正。

この一文を加えることでクラッシュを回避できます。

まだこれで解決ではない

上記の対応によりクラッシュは回避できましたが、
このままiPadで実行すると以下の様な表示になります。

このままだと不恰好なので、
ActionSheetの表示位置を調整します。

これを実行すると以下の様な表示になります。

ちなみに、popoverPresentationControllerの
sourceRectですが、iPhoneで表示する際には全く影響がないので
iPad用に処理を分ける必要はないです。

 

さいごに

確認すれば、すぐに発生する不具合に
長いこと気づかず、本当に恥ずかしかったです、、、
今回に限った話ではないですが何事も確認というものは改めて大事だと思いました。
そういう思いで書いた、この記事が誰かのお役にたてれば嬉しいです。

blog-page_footer_336




blog-page_footer_336




-iOS
-

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


  1. セシル より:

    そうです!2018年4月17日時点まだ直されないです!

  2. まつたく より:

    助かりました!

comment

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA


関連記事

[Swift]AlertControllerでメモリリークが起きた!便利なMemory Graph

はじめに こんにちは、suzukiです。この記事の結論は2点あります。AlertControllerが悪いわけではなく実装が悪かった。Memory Graphは便利!の2点です。記事の内容自体はアンチ ...

swift

UnboxとWrapでデータを永続化する

はじめに 設定ファイルなどのシンプルなデータをアプリ内に保存し、必要に応じて読み込みたいようなケースでは、JSON形式で取り扱うと簡単に行えます。 今回はUnboxとWrapという2つのライブラリを使 ...

【iOS14】App Groups を使用して WidgetKit にデータ共有

はじめに 今回はアプリ側のデータをWidgetKitにて表示を行うために、App Groupsを使用してデータの共有を行いたいと思います。 App Groupsとは簡単にいうと、同一デベロッパーが開発 ...

swift

[Swift]ObjectMapperで簡単にJSONを読み込む

はじめに こんにちは、onukiです。 私はSwiftでJSONを取り扱う際に、 ObjectMapperを使用してるのですが、今回は簡単にObjectMapperの紹介と普通にやると意外と面倒なJS ...

【SwiftUI】ドラッグ&ドロップでアプリ間の文字列の共有

はじめに こんにちはsuzukiです。今回はドラッグ&ドロップを利用したアプリ間の文字列の共有について、実装していきます。 ドラッグ&ドロップの実装 今回は実装を行うために、NSI ...

フォロー

blog-page_side_responsive

2017年11月
日 月 火 水 木 金 土
 1234
567891011
12131415161718
19202122232425
2627282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。