我正在修改我的 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 文档来解决从 ios 3.x 到 4.0 对 UIImagePicker 或 UINavigationController 的更改。
提前致谢!