Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2014年09月24日

iOS8搭載iPadで、UIImagePickerControllerを使用してカメラを起動したり写真から画像を取り込む



iOS8搭載iPadで、UIImagePickerControllerを使用してカメラを起動したり写真から画像を取り込む方法。

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

posted by mobileDeveloper at 16:19 | Comment(0) | TrackBack(0) | 開発の流れ はてなブックマーク - iOS8搭載iPadで、UIImagePickerControllerを使用してカメラを起動したり写真から画像を取り込む | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。