2010-09-11 5 views
8

что в этом плохого? Я действительно не понимаю некоторые важные детали для UIImagePickerController ....Исключение UIImagePickerController: «Тип источника должен быть UIImagePickerControllerSourceTypeCamera»

вот источник:

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

я не могу открыть библиотеку фотографий? Любая помощь ценится!

ответ

23

Если вы используете библиотеку фотографий, вам нужно установить cameraCaptureMode?

+0

это была причина, 10x! – Danail

+3

Другие свойства вызовут подобные сбои, например. 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

Может быть, не в вашем случае, но когда вы инициализировать ваш объект 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 
2

моя проблема в том, что я установить устройство камеры для .frontimagePicker.sourceType = .camera перед установкой и, очевидно, это вызвало крах. так я изменил код из:

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

к этому:

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

и проблема решена :)

0

У меня была точно такая же исключение, но я не использовал экземпляр UIImagePickerController, вместо этого я показывал веб-страницу внутри UIWebView, у которой были входные атрибуты w/HTML Media Access, чтобы включить доступ к камере.

Проблема заключается в том, что UIWebView, похоже, неправильно обрабатывает атрибуты HTML Media Access. Я заметил, что спецификация по этим атрибутам несколько раз менялась несколько раз, поэтому, хотя она показалась правильной html и работает на сафари на устройстве, она не работает на страницах, созданных с использованием UIWebView.

Bad:

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

Хорошо:

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

Исключение сразу же ушел и принимая картину работы. Это кажется новым для iOS 10 или 11, поскольку это был существующий код и не взорвался в прошлом.

Смежные вопросы