UIImagePickerController не работает для iOS 3, но работает для iOS 4 ... проблема обратной совместимости - PullRequest
0 голосов
/ 01 декабря 2010

Итак, я создал целое приложение, и оно работает безошибочно, как я и предполагал. Создано обновление, которое использует UIImages и отлично работает ТОЛЬКО НА iOS 4 и выше. По какой-то причине точно такой же код не будет работать так же на 3.0. Поскольку оригинальное приложение находится в магазине с минимальной ОС, равной 3, я не хочу просто отключать свою базу пользователей из-за какой-то глупой ошибки с моей стороны. Я не делаю ничего нового, поэтому все должно быть обратно совместимо.

В основном приложение берет изображение, выбранное из камеры или фотоальбома, а затем сохраняет его и отображает изображение на экране. Когда вы переходите к следующему экрану, он вытаскивает файл изображения с диска и отображает его в виде изображения на следующем экране. Опять же, отлично работает на iOS4 и выше.

При использовании сима 3.0 в более старой версии xcode, он просто не будет работать так же. Я знаю, что allowImageEditing был изменен на allowEditing, поэтому я разрешил это, но все остальное, как кажется в соответствии с документами, должно работать на iOS 3 и выше.

Ниже я иду в фотоальбом и возвращаюсь.

-(IBAction) getPhotoFromAlbum {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;

if (editingSwitch.on) {

    #ifdef __IPHONE_3_0
        picker.allowsImageEditing = YES;
    #else
        picker.allowsEditing = YES;
    #endif
} else if (!editingSwitch.on) {

    #ifdef __IPHONE_3_0
        picker.allowsImageEditing = NO;
    #else
        picker.allowsEditing = NO;
    #endif
}

picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;

[self presentModalViewController:picker animated:YES];

[picker release];

}

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

[picker dismissModalViewControllerAnimated:YES];

UIImage *image = nil;

if (editingSwitch.on) {

    image = [info objectForKey:@"UIImagePickerControllerEditedImage"];
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:isImageEdited];

} else if (!editingSwitch.on) {

    image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:isImageEdited];

}


imageView.image = [self imageWithImage:image];

imageView.hidden = NO;

buttonPreview.hidden = YES; 

[NSThread detachNewThreadSelector:@selector(myThreadSavingImage) toTarget:self withObject:nil];

[activitySaving startAnimating];

Когда я отлаживаю, кажется, что информация, возвращаемая из сборщика, имеет только 1 ключ. Когда он устанавливает изображение, изображение пустое. По существу, изображение никогда не возвращается, и если по каким-то редким случаям это происходит, например, когда я редактирую изображение, а не просто использую оригинал, оно не отображается на следующей странице.

Надеюсь, что все могут помочь, как только приложение будет завершено, кроме этой проблемы 3.0 и ее разочарования, поскольку я хочу выпустить ее в ближайшее время.

1 Ответ

1 голос
/ 03 июля 2011

Оказывается, ответ заключается в том, что он не работал на симуляторе из-за обновлений программы xcode. При фактической установке на устройство 3.0 код работал отлично.

...