gpt4 book ai didi

ios - UIImagePickerController 显示黑色预览屏幕

转载 作者:技术小花猫 更新时间:2023-10-29 11:04:41 25 4
gpt4 key购买 nike

我在调用 UIImagePickerController 以使用相机时遇到问题。有时,但通常情况下,预览屏幕显示为黑色(因为相机本身被遮盖了)。在做了一些研究之后,似乎人们没有正确地委派它……但是,我相信我的设置是正确的。重新启动应用程序即可解决问题。

在我的 .h 文件中,我包含了 UIImagePickerControllerDelegate 和 UINavigationControllerDelegate。

这是 .m 文件的代码

- (IBAction)camera:(id)sender {
UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init];

#if TARGET_IPHONE_SIMULATOR
imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
#else
imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera;
#endif
imagePickerController.editing = YES;
imagePickerController.delegate = self;
[self presentViewController:imagePickerController animated:YES completion:nil];
}

关于为什么会发生这种情况有什么想法吗?

谢谢

最佳答案

我刚和这个问题纠缠了一天半,果然我在主线程之外做了一些 UI 相关的事情。在我的例子中,我正在为异步 Web 服务调用更新响应处理代码中的标签。

在一个有多个 View Controller 的应用程序中,每个 View Controller 都有 2000 多行代码,这种事情很难追踪。这就是我最终得出答案的原因,而且很快就给出了答案。

https://gist.github.com/steipete/5664345

这个人发布了一个类,您可以下载并添加到您的项目中。只需将其添加到您的项目中,您无需在任何地方使用它或尝试在任何地方实例化,只需将其添加到您的项目中即可。他还指出你应该在没有 ARC 的情况下运行它。为此,转到“构建阶段”选项卡,展开“编译源”,双击该文件,然后键入 -fno-objc-arc

现在,运行您的项目并导航到您遇到黑色图像预览屏幕的位置。如果一切按计划进行,在此之前的某个时刻,您的应用程序应该崩溃并转储以控制台一些有关在主线程外执行 UIKit 操作的信息。根据您的应用程序正在做什么以及转储到控制台的内容,您应该能够很快找到导致您遇到麻烦的代码行。在我的例子中,我能够使用

调用我的响应处理程序
[self performSelectorOnMainThread:@selector(handleResponse:) withObject:data waitUntilDone:true];

我的问题马上就解决了

此外,此问题仅在我更新到 iOS 7 后才出现,我从未在 iOS 5 或 iOS 6 中看到过。

发布该文件的人建议您在发布您的应用时不要将此文件包含在您的项目中,我非常同意这一点。

调试愉快!

关于ios - UIImagePickerController 显示黑色预览屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com