5

在我的 iPad 应用程序中,我让用户使用以下代码选择图像:

UIImagePickerController* picker = [[UIImagePickerController alloc] init]; 
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
picker.delegate = self; 

UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
self.popoverController = popover;          
popoverController.delegate = self;
[popoverController presentPopoverFromRect:self.view.frame
                                   inView:self.view
                 permittedArrowDirections:UIPopoverArrowDirectionAny
                                 animated:YES];
[picker release];

(我已经将类设置为 UIPopoverControllerDelegate 和 UIImagePickerControllerDelegate,并且我已经为两个委托设置了回调。)

现在,奇怪的是,如果我从“保存的照片”相册中选择一张图片,我的“imagePickerController:didFinishPickingImage”回调方法会被调用,我得到一张图片,一切都很好。

但是,如果我从任何其他相册中选择一张图片,我的“imagePickerControllerDidCancel”回调就会被调用——而且我不会取回一张图片。

任何想法?我在网上搜索了高低...

谢谢,鲁文


剧情变厚了……

添加时:
allowsEditing = YES;

我仍然可以从“已保存的照片”相册中选择(并裁剪/缩放)图像 - 但是当尝试使用其他相册中的图像时,iPad 崩溃并显示调试器:

2010-06-03 08:16:06.759 uPrintMobile [98412:207] * 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“* -[NSCFDictionary setObject:forKey:]:尝试插入 nil 值(键:UIImagePickerControllerOriginalImage) '

还是没有头绪...

4

2 回答 2

2

我知道这是几个月后的事了,但我在同样的问题上苦苦挣扎,发现虽然在这里被问了很多次,但从未得到回答。好吧,我很高兴地说我想通了,所以我将它发布在搜索时首先出现的一些几乎相同的问题上。

我在这里发布了完整的答案:
didFinishPickingMediaWithInfo return nil photo

于 2010-11-16T08:04:37.177 回答
0

Try playing around the other options of UIImagePickerControllerSourceTypePhotoLibrary in your delegate method, check the condition like

`if( image is from photo library ) {
   // do something
} else if ( image from saved albums ) {
   // do something
}`
于 2010-11-15T06:17:48.357 回答