【问题标题】:UIImagePickerController exception : "Source type must be UIImagePickerControllerSourceTypeCamera"UIImagePickerController 异常:“源类型必须是 UIImagePickerControllerSourceTypeCamera”
【发布时间】:2010-09-11 12:57:22
【问题描述】:

这有什么问题? UIImagePickerController 的一些重要部分我真的不明白....

来源:

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

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

【问题讨论】:

    标签: iphone uiimagepickercontroller


    【解决方案1】:

    如果你使用图片库,是否需要设置cameraCaptureMode

    【讨论】:

    • 其他属性也会导致类似的故障,例如cameraViewTransform
    【解决方案2】:

    也许不是你的情况,但是当你初始化你的 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
    

    【讨论】:

      【解决方案3】:

      我的问题是我在设置imagePicker.sourceType = .camera 之前将相机设备设置为.front,显然它导致了崩溃。 所以我改变了我的代码:

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

      到这里:

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

      问题解决了:)

      【讨论】:

        【解决方案4】:

        我遇到了完全相同的异常,但是我没有使用 UIImagePickerController 控件的实例,而是在 UIWebView 内显示了一个网页,该网页具有带有 HTML 媒体访问属性的输入以启用相机访问。

        问题在于 UIWebView 似乎没有正确处理 HTML Media Access 属性。我注意到这些属性的规范随着时间的推移发生了几次变化,所以虽然它看起来像是有效的 html 并且适用于设备上的 safari,但它不适用于使用 UIWebView 呈现的页面。

        不好:

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

        好:

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

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

        【讨论】:

        • 你是英雄!
        【解决方案5】:
        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 
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-17
          • 2017-06-22
          • 2021-04-28
          • 2016-01-17
          • 2012-02-24
          相关资源
          最近更新 更多