UIImagePicker не может выполнить полноэкранный переход на iOS 3.1.3

Я модифицирую приложение для iphone, чтобы оно было обратно совместимо с iOS 3.1.3. Я разрешаю пользователю загружать изображения из библиотеки фотографий. Я представляю средство выбора изображений со следующим кодом:

UIImagePickerController* content = [[UIImagePickerController alloc] init];
content.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
content.delegate = self;
[self presentModalViewController:content animated:YES];
[content release];

Это работает правильно на IOS 4.0+. Однако на ios 3.1.3 средство выбора изображений никогда не появляется, и я получаю следующее предупреждение:

Can't perform full-screen transition. The fromViewController's view must be 
within a view that occupies the full screen.

В этом случае fromViewController является видимым контроллером представления в контроллере навигации. Контроллер навигации настраивается в appDelegate didFinishLaunchingWithOptions с использованием следующего сегмента кода:

MyViewController* root = [[MyViewController alloc] initWithNibName:nil bundle:nil];
UINavigationController *aNavigationController = [[UINavigationController alloc] initWithRootViewController:root];
aNavigationController.delegate = self;    
[window addSubview:aNavigationController.view];

Прежде чем пытаться загрузить средство выбора изображений, в контроллере навигации представлен другой контроллер представления. Следовательно, во время загрузки средства выбора изображений два контроллера представления находятся в стеке навигации.

Основываясь на другом посте, я попытался использовать контроллер корневого представления и контроллер навигации в качестве fromViewController (контроллер, представляющий средство выбора изображений). Поведение такое же.

Мне интересно, связана ли эта проблема с тем фактом, что modalPresentationStyle контроллера навигации не может быть установлен в iOS 3.1.3. Для iOS 3.2+ я установил стиль представления UIModalPresentationFullScreen. Я считаю, что это по умолчанию для предыдущих iOS. Тем не менее, я подозрительно просто потому, что предупреждение, которое я получаю, касается полноэкранного просмотра.

Кто-нибудь может предоставить какие-либо другие предложения? Мне не удалось найти какую-либо документацию Apple, в которой рассматриваются изменения в UIImagePicker или UINavigationController с ios 3.x до 4.0.

Заранее спасибо!

1 ответ

Что я обычно делаю, когда контроллер представления находится внутри контроллера навигации:

imagePicker = [[UIImagePickerController alloc]init];
imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
imagePicker.delegate = self;

[self.navigationController presentModalViewController:imagePicker animated:YES];

Надеюсь, это работает для вас!

Другие вопросы по тегам