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]; }
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!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With