UIImagePickerControllerDelegate Возвращает пустой объект словаря "editInfo" - PullRequest
2 голосов
/ 25 августа 2009

У меня есть приложение для iPhone, которое вызывает UIImagePickerController и предлагает людям выбор между выбором изображений с помощью камеры или их фото-библиотекой на телефоне. Проблема в том, что иногда (не всегда можно заставить его реплицироваться.) Объект словаря editInfo, который должен быть возвращен сообщением делегата didFinishPickingImage, возвращается пустым или (ноль). Кто-нибудь еще видел это раньше?

Я реализую UIImagePickerControllerDelegate в моем .h файле и правильно реализую два метода делегата: 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];
}

Ответы [ 2 ]

6 голосов
/ 29 августа 2009

Я решил проблему.Я публикую свой ответ здесь в надежде, что он поможет кому-то еще в подобной ситуации:

1.Устаревший метод

Метод UIImagePickerController:

– imagePickerController:didFinishPickingImage:editingInfo:

устарел в версии 3.0 ОС iPhone.Поэтому, несмотря на то, что я создал приложение с использованием SDK v2.2.1, поскольку приложение будет работать на устройствах 3.0, мне нужно было использовать новый и улучшенный метод:

- imagePickerController:didFinishPickingMediaWithInfo:editingInfo

2.Отказ от ModalView

Первое, что вы должны сделать 1014 *, которое вы должны сделать после того, как вы выбрали изображение из библиотеки или сделали снимок встроенной камерой, это закрытие окна модального просмотра сборщика.После этого вы можете выполнять любые процедуры обработки изображений.Вот как выглядит мой последний код для этого метода:

- (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 голосов
/ 09 апреля 2010

Я ПОЛУЧИЛ ЭТО!

Я не знаю почему, но я прокомментировал строку в моем приложении Delegate: "[window makeKeyAndVisible]"

Я просто разлагаю его и строю заново. Так что функция редактирования ImagePicker теперь запускается.

Надеюсь, это поможет.

Lkuulu

...