UIImagePickerController异常:“源类型必须是UIImagePickerControllerSourceTypeCamera”

问题描述:

这是什么问题?我真的不明白的UIImagePickerController一些重要的零件....UIImagePickerController异常:“源类型必须是UIImagePickerControllerSourceTypeCamera”

这里的源:

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

我不能打开照片库? 任何帮助表示赞赏!

如果您正在使用照片库,是否需要设置cameraCaptureMode

+0

那是原因,10倍! – Danail 2010-09-11 15:36:59

+3

其他特性会导致类似的故障,例如cameraViewTransform – dpjanes 2012-05-16 12:28:56

if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 

    imagePickerController = [[UIImagePickerController alloc] init]; 
    imagePickerController.delegate = self; 
    imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 

     if([UIImagePickerController isCameraDeviceAvailable:UIImagePickerControllerCameraDeviceFront]) { 

      imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
     } else { 
      imagePickerController.cameraDevice = UIImagePickerControllerCameraDeviceRear; 
     } 

    [self presentModalViewController:imagePickerController animated:YES]; 
    [imagePickerController release]; 
} 
else { 
    // do stuff ///....Alert 
} 

也许不是你的情况,但是当你initalize你的UIImagePickerController对象,首先你需要设置,否则任何其他属性,你得到同样的错误前将源类型。

let imagePickerController = UIImagePickerController() 
imagePickerController.sourceType = UIImagePickerControllerSourceType.Camera 
imagePickerController.cameraCaptureMode = 
UIImagePickerControllerCameraCaptureMode.Photo 
imagePickerController.cameraDevice = .Front 
imagePickerController.showsCameraControls = true; 
imagePickerController.navigationBarHidden = false; 
imagePickerController.toolbarHidden = false; 
imagePickerController.delegate = self 

我的问题是,我的相机设备设置为.front设置imagePicker.sourceType = .camera之前,显然它造成死机。 所以我改变了我的代码:

imagePicker.cameraDevice = .front 
imagePicker.sourceType = .camera 

这样:

imagePicker.sourceType = .camera 
imagePicker.cameraDevice = .front 

和问题解决:)

我有此相同的例外,但是我没有使用的实例UIImagePickerController控件,而是我在一个UIWebView中显示了一个网页,该网页有一个输入w/HTML Media Access属性来启用摄像头访问。

问题是,它似乎UIWebView不能正确处理HTML媒体访问属性。我注意到这些属性的规范随着时间而改变了几次,所以尽管它看起来像是有效的html,并且在设备上的safari上工作,但它不适用于使用UIWebView呈现的页面。

坏:

<input type="file" accept="image/*" capture="camera" /> 

好:

<input type="file" accept="image/*;capture=camera" /> 

异常,立即去了,便拍照工作。这对于iOS 10或11来说似乎是新的,因为它是现有的代码,并且在过去没有爆炸。