Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Source type 1 not available

I have an app for iPhone and iPad, and when I try to load an UIPickerViewController in a UIPopoverController for iPad I get the Exception "Source type 1 not available". getting the problem even though using the device.

@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]; } 
like image 741
Allen Walker Avatar asked Nov 26 '12 11:11

Allen Walker


1 Answers

This is because you are opening camera on simulator... since the code is something like [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera] and obviously simulator don't have camera... Proceed giving an alert like this,

 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 } 

Swift 3:

if !UIImagePickerController.isSourceTypeAvailable(.camera) {     let alertController = UIAlertController(title: nil, message: "Device has no camera.", preferredStyle: .alert)      let okAction = UIAlertAction(title: "Alright", style: .default, handler: { (alert: UIAlertAction!) in     })      alertController.addAction(okAction)     self.present(alertController, animated: true, completion: nil) } else {     // Other action } 

Nothing to worry, it will work on device correctly!

like image 136
Preetam Jadakar Avatar answered Sep 22 '22 05:09

Preetam Jadakar