2010-09-11 13 views
8

co jest z tym nie tak? I naprawdę nie rozumiem niektórych ważnych zamienne do UIImagePickerController ....Wyjątek UIImagePickerController: "Typ źródła musi być UIImagePickerControllerSourceTypeCamera"

oto źródło:

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

nie mogę otworzyć bibliotekę zdjęć? Każda pomoc doceniona!

Odpowiedz

23

Jeśli używasz biblioteki zdjęć, czy musisz ustawić cameraCaptureMode?

+0

to był powód, 10x! – Danail

+3

Inne właściwości spowodują podobne niepowodzenia, np. 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

Może nie w twoim przypadku, ale jeśli initalize swój obiekt UIImagePickerController, najpierw trzeba ustawić typ źródła przed ustawieniem innych właściwości inaczej masz ten sam błąd.

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

moim problemem było to, że mogę ustawić urządzenie kamery do .front przed ustawieniem imagePicker.sourceType = .camera i oczywiście spowodował wypadek. więc zmieniłem kod:

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

do tego:

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

i problem rozwiązany :)

0

miałem dokładnie ten sam wyjątek, jednak nie używał instancję Kontrola UIImagePickerController, zamiast tego pokazywałam stronę internetową wewnątrz UIWebView, który miał atrybuty w/HTML Media Access, aby umożliwić dostęp do kamery.

Problem polega na tym, że wygląda na to, że interfejs UIWebView nie obsługuje poprawnie atrybutów HTML Media Access. Zauważyłem, że specyfikacja tych atrybutów zmieniała się kilka razy z upływem czasu, więc chociaż wydawało się, że jest poprawny i działa w Safari na urządzeniu, nie działa na stronach renderowanych za pomocą interfejsu UIWebView.

Źle:

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

Dobre: ​​

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

Wyjątkiem natychmiast odszedł i robienia zdjęć działa. Wydaje się to być nowością w systemie iOS 10 lub 11, ponieważ był to istniejący kod i nie wybuchł w przeszłości.

Powiązane problemy