2009-08-25 3 views
2

Ich habe eine iPhone-App, die den UIImagePickerController aufruft, um Leuten die Wahl zwischen der Auswahl von Bildern über die Kamera oder über ihre Fotobibliothek auf dem Telefon zu bieten. Das Problem ist, dass das editingInfo-Dictionary-Objekt, das von der didFinishPickingImage-Delegat-Nachricht zurückgegeben werden soll, manchmal (oder nicht immer repliziert) zurückkommt und leer oder (null) ist. Hat jemand anderes das schon mal gesehen?UIImagePickerControllerDelegate Rückgabe Leeres "editingInfo" Dictionary-Objekt

Ich bin die Implementierung der UIImagePickerControllerDelegate in meiner .h-Datei und ich bin richtig, die zwei Delegate-Methoden zu implementieren: didFinishPickingImage und imagePickerControllerDidCancel.

Jeder würde Hilfe sehr geschätzt. Vielen Dank im Voraus!

Hier ist mein Code ...

meine .h-Datei:

@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; 

meine .m-Datei:

@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]; 
} 

Antwort

6

löste ich das Problem. Ich poste meine Antwort hier in der Hoffnung, es hilft jemand anderes in einer ähnlichen Situation:

1. Veraltete Methode

Die UIImagePickerController Methode:

– imagePickerController:didFinishPickingImage:editingInfo: 

ist in v3.0 von dem veralteten iPhone OS. Also auch wenn ich die App mit dem SDK v2.2.1 gebaut, weil die App auf 3.0-Geräte laufen wird, ich brauchte die neue und verbesserte Methode zu verwenden:

- imagePickerController:didFinishPickingMediaWithInfo:editingInfo 

2. die ModalView Dismissing

Die erste Sache, die Sie tun müssen, nachdem Sie ein Bild aus der Bibliothek ausgewählt oder ein Bild mit der integrierten Kamera aufgenommen haben, ist das modale Ansichtsfenster des Pickers zu schließen. Danach können Sie beliebige Bildverarbeitungsroutinen ausführen. Hier ist, wie mein endgültiger Code für diese Methode aussieht:

Ich hoffe, das hilft jemandem, der es braucht.

Danke,

L.

0

Ich habe es!

Ich weiß nicht, warum, aber ich hatte eine Linie in meinem AppDelegate Kommentar: „[Fenster makeKeyAndVisible]“

ich decomment Es ist einfach und wieder aufzubauen. Also die Edit-Funktion von ImagePicker läuft jetzt.

Ich hoffe diese Hilfe.

Lkuulu