2009-08-25 3 views
2

UIImagePickerController를 호출하여 카메라를 통해 이미지를 선택하거나 전화로 사진 라이브러리를 통해 이미지를 선택하는 옵션을 제공하는 iPhone 앱이 있습니다. 문제는 때때로 didFinishPickingImage 대리자 메시지에서 반환해야하는 editingInfo 사전 개체가 비어 있거나 (null) 반환되는 경우가 있습니다 (항상 복제 할 수는 없습니다). 다른 사람이 전에 본 적이 있습니까?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: 

은의 버전 3.0에서 더 이상 사용되지 않습니다 iPhone OS.

- imagePickerController:didFinishPickingMediaWithInfo:editingInfo 

2. ModalView

을 일축 : I 앱이 3.0 장치에서 실행됩니다 때문에 SDK의 v2.2.1를 사용하여 응용 프로그램을 구축 그래서 비록 나는 새롭고 개선 된 방법을 사용하는 데 필요한 첫 번째 내용 라이브러리에서 사진을 선택하거나 내장 카메라로 사진을 찍은 후에해야하는 것은 피커의 모달보기 창을 닫는 것입니다. 그 후에는 이미지 처리 루틴을 수행 할 수 있습니다. 그 방법에 대한 최종 코드는 다음과 같습니다.

- (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

관련 문제