web-dev-qa-db-fra.com

Type de source 1 non disponible

J'ai une application pour iPhone et iPad, et lorsque j'essaie de charger une UIPickerViewController dans une UIPopoverController pour iPad, le message Exception "Type de source 1 non disponible" .

@try {
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])  {
        UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

        imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        imagePicker.delegate = self;
        imagePicker.allowsEditing = NO;

        self.tempComp = component;
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
            [self presentModalViewController:imagePicker animated:YES];
        }else {
            // We are using an iPad
            popoverController=[[UIPopoverController alloc] initWithContentViewController:imagePicker];
            popoverController.delegate = self;

            [popoverController presentPopoverFromRect:component.bounds inView:component permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        }
    }else{
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Camera Non Disponibile" message:@"La camera non è disponibile" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
        [alert show];
    }
}
@catch (NSException *exception) {
    NSLog(@"Cattura eccezione %@", exception);
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Eccezione" message:[NSString stringWithFormat:@"%@", exception] delegate:self cancelButtonTitle:@"Ok" otherButtonTitles: nil];
    [alert show];
}
36
Allen Walker

C’est parce que vous ouvrez la caméra sur le simulateur ....... puisque le code est quelque chose comme [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera].__ et que, évidemment, le simulateur n’a pas camera... Procédez en donnant une alerte comme celle-ci,

 if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {

    UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                          message:@"Device has no camera."
                                                         delegate:nil
                                                cancelButtonTitle:@"OK"
                                                otherButtonTitles: nil];

    [myAlertView show];

}
else{
     //other action
}

Rien à craindre, cela fonctionnera correctement sur l'appareil!

Swift 3:

if !UIImagePickerController.isSourceTypeAvailable(.camera){

    let alertController = UIAlertController.init(title: nil, message: "Device has no camera.", preferredStyle: .alert)

    let okAction = UIAlertAction.init(title: "Alright", style: .default, handler: {(alert: UIAlertAction!) in
    })

    alertController.addAction(okAction)
    self.present(alertController, animated: true, completion: nil)

}
else{
     //other action
}
88
preetam

Essayez-vous d'exécuter l'application dans un émulateur iPhone?

Si tel est le cas, l'émulateur ne prend pas en charge les fonctionnalités de l'appareil photo et ne prend en charge que l'obtention de photos à partir de la photothèque. On dirait que je devrais peut-être intégrer une solution de secours automatique, car de nombreuses personnes essaieront de tester leurs applications sur l'émulateur.

0
Pulsein Corporation