端末横向きでフォトライブラリーを呼び出すとクラッシュ

iPad以外では試していないのだけど、横向き固定のアプリ上で、UIImagePickerController 経由のフォトライブラリーを出そうとするとこんなエラーを吐いてクラッシュしてしまう。

*** Terminating app due to uncaught exception ‘UIApplicationInvalidInterfaceOrientation’, reason: ‘Supported orientations has no common orientation with the application, and [PUUIAlbumListViewController shouldAutorotate] is returning YES’

これまではこのコントローラーを UIPopoverController に入れて表示させていて(多分だけど)問題はなかったと思うんだけど、 UIPopoverController が Deprecated in iOS 9.0. だっていうんで、UIPopoverPresentationController に入れてみたらこのありさまですよ。

ググってみると AppDelegate で shouldAutorotate を YES で返せとか書いてあるんだけど、ちょっとそれは的外れというか。 だって [PUUIAlbumListViewController shouldAutorotate] is returning YES って話なんですもの。 そもそも PUUIAlbumListViewController ってなんですよ?アクセスできないじゃん?って話なんですよ奥さん。

でも、前にノーマルな UIPickerView を UIViewController のサブクラスに入れて表示させた際にも同じようなクラッシュに遭ったような記憶があって…。 そのソースを見たら、あったあった、設定してあったですよ。 だもんでソースはこうなります。

UIImagePickerController *pickerController = [[[UIImagePickerController alloc] init] autorelease];
[pickerController setDelegate:self];
[pickerController setModalPresentationStyle:UIModalPresentationPopover];
[pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];

〜〜〜 UIPopoverPresentationController にぶっこんで表示処理 〜〜〜

modalPresentationStyle を UIModalPresentationPopover で設定(指定)…って、そりゃそうだ、UIPopoverPresentationController で処理しようとしてるんだから。

と、そんなこんなな覚書でした。


%d人のブロガーが「いいね」をつけました。