iPad 5.1 simulator で UIImagePickerController が正常に動かない
- 2012年10月21日
- iOSアプリ開発
UIImagePickerControllerを使って写真を選択する処理を実装しようとしています。
先人の知恵を頼りにしながら以下のようなコードになりました。
しかしこのコード、iphoneシミュレータやiPad実機などでは正常に動いたのですが、iPad 5.1 simulatorでだけは動作が不安定なんです。
- (IBAction)pushButtonSelectPicture:(id)sender {
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]){
UIImagePickerController *ipc = [[UIImagePickerController alloc] init];
ipc.delegate = self;
ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
if(imagePopController != nil){
[imagePopController dismissPopoverAnimated:NO];
imagePopController = nil;
}
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
//iPad
imagePopController = [[UIPopoverController alloc] initWithContentViewController:ipc];
[imagePopController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny
animated:YES];
}else {
//iPad以外
[self presentViewController:ipc animated:YES
completion:^{}];
}
ipc = nil;
}
}
-(void)imagePickerController:(UIImagePickerController*)picker
didFinishPickingImage:(UIImage*)image editingInfo:(NSDictionary*)editingInfo{
if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){
// ipad
[imagePopController dismissPopoverAnimated:YES];
}else{
// iphone
[self dismissViewControllerAnimated:YES completion:nil];
}
[self setImage:image];
image = nil;
}
popoverまでは正常に動いて写真を選択しても imagePickerContoller:didFinishPickingImage:edittigInfo が呼ばれなかったり、そもそもpopoverが出なかったり。。。
breakpointを設定してステップ実行していると、以下のエラーが出たこともありました。
Named service 'com.apple.PersistentURLTranslator.Gatekeeper' not found. assetsd is down or misconfigured. Things will not work the way you expect them to.
このエラーについて調べてみると、こんなのが↓
ios – Log message referring to Gatekeeper appears occasionally when running simulator – Stack Overflow
objective c – iPad simulator does not work with UIImagePickerController in an iPhone app – Stack Overflow
ひとりは
iPad simulator v5.0
iPad simulator v5.1
でだけこの問題が発生したと言ってます。
私もiPad 5.1 simulatorでは問題があるけど、実機やiPad 6.0 simulatorでは正常に動いています。
simulatorのバグなのかなぁ。
上記リンク先で一応の回避策のようなものが書かれています。
違うデバイスでテストするときは、一旦シミュレータを終了してからリスタートするといいみたい。
確かに私の環境でもこれで一応は動きました。