iPadの場合、カメラ撮影時はUIImagePickerControllerをpresentViewControllerで表示、アルバムから画像を取り込むときは UIImagePickerControllerをUIPopoverControllerで表示するが、iOS8の場合はどちらもNSOperationQueueブロックの中で処理をするようにしなければならない。これをしない場合は無反応となる。
カメラ撮影
UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.allowsEditing = NO;
imagePicker.delegate = self;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[self presentViewController:imagePicker animated:NO completion:nil];
}];
アルバム
UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.allowsEditing = NO;
imagePicker.delegate = self;
UIPopoverController* popover = [[UIPopoverController alloc] initWithContentViewController: imagePicker];
popover.delegate = self;
[[NSOperationQueue mainQueue] addOperationWithBlock:^{
[popover presentPopoverFromBarButtonItem:cameraMenu permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}];
なお、現時点ではiPhone/iPod touchはiOS7以前の手法でも動作するが、今後のiOSのバージョンアップで動作しなくなる可能性も否めないので、iPadと同様に上記のようにブロック内で記述するのが望ましい。
参考記事;
http://stackoverflow.com/questions/24942282/uiimagepickercontroller-not-presenting-in-ios-8