2009-08-25 48 views
2

我有一个iPhone应用程序调用UIImagePickerController来提供人们通过相机或通过手机上的照片库选择图像之间的选择。问题在于,有时(不能总是让它复制),应该由didFinishPickingImage委托消息返回的editInfo字典对象会返回空白或(空)。有没有其他人看过这个?UIImagePickerControllerDelegate返回空白“editingInfo”字典对象

我在我的.h文件中实现了UIImagePickerControllerDelegate,并且我正确地实现了两个委托方法:didFinishPickingImage和imagePickerControllerDidCancel。

任何帮助将不胜感激。先谢谢你!

这里是我的代码...

我的.h文件:

@interface AddPhotoController : UIViewController <UIImagePickerControllerDelegate, UINavigationControllerDelegate> { 
    IBOutlet UIImageView *imageView; 
    IBOutlet UIButton *snapNewPictureButton; 
    IBOutlet UIButton *selectFromPhotoLibraryButton; 
} 
@property (nonatomic, retain) UIImageView *imageView; 
@property (nonatomic, retain) UIButton *snapNewPictureButton; 
@property (nonatomic, retain) UIButton * selectFromPhotoLibraryButton; 

我.m文件:

@implementation AddPhotoController 
@synthesize imageView, snapNewPictureButton, selectFromPhotoLibraryButton; 

- (IBAction)getCameraPicture:(id)sender 
{ 

    UIImagePickerController *picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = UIImagePickerControllerSourceTypeCamera; 
    picker.allowsImageEditing = YES; 

[self presentModalViewController:picker animated:YES]; 
[picker release]; 
} 
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo 
{ 
NSLog(@"Image Meta Info.: %@",editingInfo); 

UIImage *selectedImage = image; 
imageView.image = selectedImage; 
self._havePictureData = YES; 
[self.useThisPhotoButton setEnabled:YES]; 

[picker dismissModalViewControllerAnimated:YES]; 
} 

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 
{ 
    [picker dismissModalViewControllerAnimated:YES]; 
} 

回答

6

我解决了这个问题。我在这里发布我的答案在希望它可以帮助别人了类似的情况:

1的方法已过时

的方法的UIImagePickerController:

– imagePickerController:didFinishPickingImage:editingInfo: 

中的V3.0弃用iPhone OS。所以,即使我使用SDK V2.2.1,因为该应用程序将在3.0设备运行内置的应用程序,我需要使用新的和改进的方法:

- imagePickerController:didFinishPickingMediaWithInfo:editingInfo 

2.驳回ModalView

第一件事当您从库中选择图片或使用内置相机拍摄图片后,您必须执行此操作,即关闭拾取器的模态视图窗口。之后,您可以执行任何图像处理例程。这里是我的最终代码看起来像那种方法:

- (void) imagePickerController:(UIImagePickerController *)thePicker didFinishPickingMediaWithInfo:(NSDictionary *)imageInfo 
{ 
    [thePicker dismissModalViewControllerAnimated:YES]; 
    UIImage *img = [imageInfo objectForKey:@"UIImagePickerControllerEditedImage"]; 
    previewImage.image = nil; 
    self.previewImage.image = img; 

    NSData *imageData = UIImagePNGRepresentation(img); 
    if ([imageData length] > 0) { 

    [self archivePictureData:imageData]; 
    self._havePictureData = YES; 

    [self.useThisPhotoButton setEnabled:YES]; 
    } 

} 

我希望这可以帮助需要它的人。

感谢,

L.

0

我知道了!

我不知道为什么,但我有我的appDelegate注释行: “[窗口makeKeyAndVisible]”

我只是decomment并重新建立。所以ImagePicker的编辑功能现在可以运行。

我希望这个帮助。

Lkuulu