2010-09-11 14 views
8

¿Qué hay de malo en esto? Realmente no entiendo algunas partes importantes para UIImagePickerController ....Excepción de UIImagePickerController: "El tipo de fuente debe ser UIImagePickerControllerSourceTypeCamera"

aquí está la fuente:

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

¿No puedo abrir la biblioteca de fotos? ¡Cualquier ayuda apreciada!

Respuesta

23

Si está utilizando la biblioteca de fotos, ¿necesita establecer cameraCaptureMode?

+0

esa fue la razón, 10x! – Danail

+3

Otras propiedades causarán fallas similares, p. cámaraViewTransform – 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

Tal vez no en su caso, pero cuando inicializar el objeto UIImagePickerController, primero que hay que establecer el tipo de fuente antes de establecer cualquier otra propiedad de otro modo se obtiene el mismo error.

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

mi problema fue que me puse dispositivo de cámara para .front antes de imagePicker.sourceType = .camera y, obviamente, que causó accidente. así que cambié mi código de:

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

a esto:

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

y problema resuelto :)

0

Tenía esta exactamente la misma excepción, sin embargo no estaba usando una instancia de El control UIImagePickerController, en cambio, mostraba una página web dentro de un UIWebView que tenía una entrada con atributos de Acceso a medios HTML para habilitar el acceso a la cámara.

El problema es que parece que UIWebView no maneja los atributos de acceso a medios HTML correctamente. Observé que las especificaciones de estos atributos cambiaron varias veces con el tiempo, por lo que, aunque parecía un html válido y funciona en safari en el dispositivo, no funciona en páginas procesadas con UIWebView.

malo:

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

bueno:

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

La excepción fue inmediatamente de distancia y tomar una foto funciona. Esto parece ser nuevo para iOS 10 u 11 ya que era código existente y no explotó en el pasado.

Cuestiones relacionadas