現象
iPad端末でのみUIActivityViewControllerで共有画面を表示させようとするとクラッシュする。
iPhoneでは発生せず、OSバージョン関係なくiPadのみで発生。
原因
元のコード
以下がiPhoneでのみUIActivityViewControllerが表示できていたコードです。
// インスタンス化
let activityVc = UIActivityViewController(activityItems: items, applicationActivities: nil)
// 表示
self.present(activityVc, animated: true, completion: nil)
修正コード
以下のように表示対象を指定してあげる必要があるみたいでした。
iPhoneはデフォルトの設定で下からニュッとUIActivityViewControllerが出てきますが、iPadではデフォルトの設定がなく、指定をしないとどのViewに対してUIActivityViewControllerを出せば良いのか分からなくなるのが原因みたいでした。
// インスタンス化
let activityVc = UIActivityViewController(activityItems: items, applicationActivities: nil)
// 表示対象を指定
activityVc.popoverPresentationController?.sourceView = self.view
// 表示
self.present(activityVc, animated: true, completion: nil)
参考