2010-11-03 6 views
10

Salut tout le monde J'essaie de faire une application de caméra. Je fais ceci commeUiimagepicker Pour montrer la caméra

picker.sourceType = UIImagePickerControllerSourceTypeCamera; 

où sélecteur est l'objet de UIimagepicker Controller.

Mais lorsque le code est exécuté, l'application se termine en affichant l'erreur.

en raison de l'application Mettre fin exception uncaught 'NSInvalidArgumentException', motif: 'Type de source 1 non disponible'

J'utilise ceci sur simulateur. Je sais qu'il n'est pas possible de vérifier l'appareil photo dans un simulateur, mais nous pouvons le tester. Je pense que c'est peut-être parce que l'appareil photo n'est pas disponible, c'est pourquoi il se termine. Mais j'ai vu une application avec le même code mais qui fonctionnait sur le simulateur, montrant simplement la vue de la caméra. Aidez-moi simplement à résoudre ce problème. Et d'ailleurs comment puis-je mettre ma vue personnalisée à la caméra dans cette application?

Répondre

21

Vous devez vérifier si l'appareil dispose d'une caméra avant de définir le type de source.

Les éléments suivants peuvent vérifier si l'appareil est équipé d'une caméra.

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
} 

Vous ne pouvez pas vérifier la fonctionnalité de la caméra à partir de votre simulateur. Vous pouvez affecter UIImagePickerControllerSourceTypePhotoLibrary comme sourceType pour tester sur le simulateur.

+0

Merci Chaitanya Je l'ai fait, mais je me demandais que comment cette application montrait vue de la caméra sur le simulateur, mais n'a pas pu cliquer comme le matériel était nécessaire. – Sabby

+0

le système d'exploitation nécessite un pilote pour faire fonctionner le périphérique externe. iOS n'a pas le pilote pour l'appareil photo du MacBook. –

0

En dessous du code lorsqu'une exception se produit. Rappelez-vous que vous devez mettre en œuvre NavigationController

if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
      UIAlertController *alertView = [UIAlertController alertControllerWithTitle:@"ERROR" message:@"No Camera Avalible" preferredStyle:UIAlertControllerStyleAlert]; 

     UIAlertAction *ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * action) { 
      [self dismissViewControllerAnimated:alertView completion:nil]; 
     }]; 
     [alertView addAction:ok]; 
     [self.navigationController presentViewController:alertView animated:YES completion:nil]; 
    } 
1

Swift 2,2

if UIImagePickerController.isSourceTypeAvailable(.Camera) { 
    imagePicker.delegate = self 
    imagePicker.sourceType = .Camera 
    presentViewController(imagePicker, animated: true, completion: nil) 
} else { 
    print("The device has no camera") 
} 

photos enregistrées album

if UIImagePickerController.isSourceTypeAvailable(.SavedPhotosAlbum) { 
    imagePicker.delegate = self 
    imagePicker.sourceType = .SavedPhotosAlbum 
    imagePicker.allowsEditing = false 
    self.presentViewController(imagePicker, animated: true, completion: nil) 
}