iOS

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

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

はじめに

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

エラー内容

エラー原因

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

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

結論を述べると、

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

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

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

まだこれで解決ではない

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

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

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

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

 

さいごに

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

page_footer_300rect




page_footer_300rect




-iOS
-

執筆者:


  1. セシル より:

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

comment

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

swift

[Swift3] Segmentを使った画面切り替え (Extra View)

1 はじめに1.1 前提条件2 Segmentの用意3 表示したいViewを用意4 Extra Viewsに追加5 Segmentでの切り替え5.1 デフォルトで表示されるViewを設定5.2 Seg ...

swift

端末のモデル名やサイズを簡単に取得できるライブラリ「Device」

1 はじめに2 準備3 試してみる3.1 端末モデル名3.2 画面サイズ3.3 端末の種類4 さいごに はじめに こんにちは、nukkyです。 今回は端末のサイズやモデル名などを 簡単に取得できるライ ...

[Swift]Alamofireを使ってファイルをDLしてみる

1 はじめに1.1 前提条件2 今回やること3 準備4 実装4.1 DLしたファイルへのアクセス5 さいごに はじめに こんにちは、nukkyです。 みなさんSwiftでの通信ライブラリは何を使ってま ...

swift

SwiftでTTTAttributedLabelの文字列からリンク表示

1 はじめに2 TTTAttributedLabelとは3 CocoaPodsでインストール4 実装4.1 Labelの表示4.2 タップの検知5 さいごに はじめに こんにちは。 はじめましてnuk ...

swift

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

1 はじめに2 準備3 実装3.1 基本的な使い方3.2 ネスト配列に対応してみよう4 さいごに はじめに こんにちは、onukiです。 私はSwiftでJSONを取り扱う際に、 ObjectMapp ...

フォロー

follow us in feedly

page_side_300rect

2017年11月
« 10月 12月 »
 1234
567891011
12131415161718
19202122232425
2627282930 

アプリ情報

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