2010-09-11 25 views
8

có vấn đề gì với điều này? Tôi thực sự không hiểu một số bộ phận quan trọng đối với UIImagePickerController ....Ngoại lệ UIImagePickerController: "Loại nguồn phải là UIImagePickerControllerSourceTypeCamera"

đây là nguồn:

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

Tôi không thể mở thư viện ảnh cá nhân? Bất kỳ trợ giúp nào được đánh giá cao!

Trả lời

23

Nếu bạn đang sử dụng thư viện ảnh, bạn có cần đặt cameraCaptureMode không?

+0

đó là lý do, 10x! – Danail

+3

Các thuộc tính khác sẽ gây ra lỗi tương tự, ví dụ: cameraViewTransform – dpjanes

3
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 
} 
5

Có thể không phải trong trường hợp của bạn nhưng khi bạn đầu tư vào đối tượng UIImagePickerController, FIRST bạn cần đặt loại nguồn trước khi đặt bất kỳ thuộc tính nào khác nếu không bạn gặp lỗi tương tự.

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 
2

vấn đề của tôi là tôi đặt thiết bị camera thành .front trước khi đặt imagePicker.sourceType = .camera và rõ ràng là nó gây ra sự cố. vì vậy tôi đã thay đổi mã của tôi từ:

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

này:

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

và vấn đề giải quyết :)

0

tôi đã cùng một ngoại lệ này chính xác, tuy nhiên tôi đã không sử dụng một thể hiện của Điều khiển UIImagePickerController, thay vào đó tôi đã hiển thị một trang web bên trong một UIWebView có các thuộc tính đầu vào w/HTML Media Access để cho phép truy cập máy ảnh.

Vấn đề là có vẻ như UIWebView không xử lý các thuộc tính HTML Media Access đúng cách. Tôi nhận thấy rằng các spec trên các thuộc tính này thay đổi một vài lần theo thời gian, do đó, trong khi nó có vẻ như html hợp lệ và hoạt động trên safari trên thiết bị, nó không hoạt động trên các trang được hiển thị bằng UIWebView.

Xấu:

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

Tốt:

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

Trường hợp ngoại lệ ngay lập tức ra đi và chụp ảnh hoạt động. Điều này có vẻ là mới đối với iOS 10 hoặc 11 vì nó là mã hiện tại và không phát nổ trong quá khứ.

Các vấn đề liên quan