Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
UIImagePickerControllerSourceTypeCamera在IPHONE模拟器中崩溃?_Iphone_Cocoa Touch_Ios4_Uiimagepickercontroller - Fatal编程技术网

UIImagePickerControllerSourceTypeCamera在IPHONE模拟器中崩溃?

UIImagePickerControllerSourceTypeCamera在IPHONE模拟器中崩溃?,iphone,cocoa-touch,ios4,uiimagepickercontroller,Iphone,Cocoa Touch,Ios4,Uiimagepickercontroller,如果您尝试使用摄像头作为源类型测试UIImagePickerController,那么模拟器将崩溃,这是一个已知的问题吗 我有以下代码: self.imgPicker = [[UIImagePickerController alloc] init]; self.imgPicker.allowsEditing = NO; self.imgPicker.delegate = self; [self.imgPicker setSourceType:UIImagePickerControllerSour

如果您尝试使用摄像头作为源类型测试UIImagePickerController,那么模拟器将崩溃,这是一个已知的问题吗

我有以下代码:

self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.allowsEditing = NO;
self.imgPicker.delegate = self;
[self.imgPicker setSourceType:UIImagePickerControllerSourceTypeCamera];
[self presentModalViewController:self.imgPicker animated:YES];
[imgPicker release];
在模拟器中运行此命令,我在堆栈@-[UIImagePickerController setSourceType:]上得到一个objc异常抛出错误


现在,如果我将源类型设置为照片库,那么一切都会顺利运行吗?这是怎么回事?

模拟器没有摄像头,也无法模拟拍照(使用isight会很好,但苹果没有这么友好)。但是,您的代码并不安全,例如,旧的ipod touch没有摄像头,在这种情况下,您的应用程序将在此设备上崩溃

正如苹果公司所建议的:

使用图像选择器控制器的步骤 包含其默认控件, 执行以下步骤:

1.验证设备是否能够从中拾取内容 所需来源。打电话给 isSourceTypeAvailable:类方法, 从 “UIImagePickerController资源类型” 枚举。

2.检查所选源类型的可用媒体类型 使用,通过调用 资源类型的可用媒体类型: 类方法。这让你 区分可以 用于视频录制和一个 只能用于静止状态 图像

3.告诉图像拾取控制器根据图像调整UI 要制作的媒体类型 可用的静态图像、电影或 这两种方法都是通过设置媒体类型来实现的 财产

4.通过调用 presentModalViewController:动画: 当前活动视图的方法 控制器,通过配置的 图像选择器控制器作为新的 视图控制器

5.当用户点击按钮选择新拍摄或保存的图像时 或电影,或取消操作, 使用您的 委托对象。对于新捕获的 介质,然后您的代表可以保存它 安装到设备上的摄像头滚轮。对于 以前保存的媒体,您的代理 然后可以根据需要使用图像数据 以达到应用程序的目的


因此,您必须调用ISourceTypeAvailable,并一致地设置源类型。

模拟器没有摄像头,无法模拟拍照(使用isight会很好,但苹果没有这么友好)。但是,您的代码并不安全,例如,旧的ipod touch没有摄像头,在这种情况下,您的应用程序将在此设备上崩溃

正如苹果公司所建议的:

使用图像选择器控制器的步骤 包含其默认控件, 执行以下步骤:

1.验证设备是否能够从中拾取内容 所需来源。打电话给 isSourceTypeAvailable:类方法, 从 “UIImagePickerController资源类型” 枚举。

2.检查所选源类型的可用媒体类型 使用,通过调用 资源类型的可用媒体类型: 类方法。这让你 区分可以 用于视频录制和一个 只能用于静止状态 图像

3.告诉图像拾取控制器根据图像调整UI 要制作的媒体类型 可用的静态图像、电影或 这两种方法都是通过设置媒体类型来实现的 财产

4.通过调用 presentModalViewController:动画: 当前活动视图的方法 控制器,通过配置的 图像选择器控制器作为新的 视图控制器

5.当用户点击按钮选择新拍摄或保存的图像时 或电影,或取消操作, 使用您的 委托对象。对于新捕获的 介质,然后您的代表可以保存它 安装到设备上的摄像头滚轮。对于 以前保存的媒体,您的代理 然后可以根据需要使用图像数据 以达到应用程序的目的


因此,您必须调用
isSourceTypeAvailable
并一致地设置源类型。

因此答案是肯定的,它确实会在模拟器中崩溃,因为它没有摄像头:)在iphone上运行良好,可以进行测试。了解源代码类型测试,但如果您计划将应用程序专用于摄像头设备,是否真的有必要?我认为您可以在info.p中使用“静止摄像头”键指定所需的设备功能。但我强烈建议您进行检查,因为正如文档中提到的isSourceTypeAvailable方法“如果相机已经在使用,此方法返回否”…这意味着如果您的设备有摄像头,这并不意味着您可以随时使用它。因此,请温和地处理错误,您的用户将感谢您,但iSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera返回YES。仍然会在模拟器上崩溃。所以答案是肯定的,它确实会在模拟器中崩溃,因为它没有摄像头:)在iphone上测试效果很好。了解源代码类型测试,但如果您计划将应用程序专用于摄像头设备,是否真的有必要?我认为您可以在info.p中使用“静止摄像头”键指定所需的设备功能。但我强烈建议您进行检查,因为正如文档中提到的isSourceTypeAvailable方法“如果相机已经在使用,此方法返回否”…这意味着如果您的设备有摄像头,这并不意味着您可以随时使用它。因此,请温和地处理错误,您的用户将感谢您,但iSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera返回YES。仍然在模拟器上崩溃。