Use UIImagePickerController on iphone simulator

I have a method that takes photos from a gallery or from a camera

-(IBAction) getPhoto:(id) sender { UIImagePickerController * picker = [[UIImagePickerController alloc] init]; picker.delegate = self; if((UIButton *) sender == choosePhotoBtn) { picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; } else { picker.sourceType = UIImagePickerControllerSourceTypeCamera; } [self presentModalViewController:picker animated:YES]; } 

But when I run it on the simulator, the code does not work. And it does not work at picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum and picker.sourceType = UIImagePickerControllerSourceTypeCamera

Is there a problem in the simulator or in the code?

+6
source share
4 answers

Try it,

  if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; } else { picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum; } [self.navigationController presentModalViewController:picker animated:NO]; 

If you are creating an iPad app. You will need to present the gallery in the popOver control.

+9
source

Swift 3/4/5 version:

 if UIImagePickerController.isSourceTypeAvailable(.camera) { picker.sourceType = .camera } else { picker.sourceType = .savedPhotosAlbum // or .photoLibrary } 

Swift 2 Version:

 if UIImagePickerController.isSourceTypeAvailable(.Camera) { picker.sourceType = .Camera } else { picker.sourceType = .SavedPhotosAlbum // or .PhotoLibrary } 

In the simulator you cannot use cameraCaptureMode and showsCameraControls .

+2
source

In the simulator, your picker.sourceType = UIImagePickerControllerSourceTypeCamera will not be named because there is no camera in the simulator. It is also recommended that you check if the source type is available to avoid failures.

 #import <MobileCoreServices/UTCoreTypes.h> โ€ฆ. if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIImagePickerController *imagePickerCamera =[[UIImagePickerController alloc] init]; imagePickerCamera.delegate = self; imagePickerCamera.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil]; imagePickerCamera.allowsEditing = YES; imagePickerCamera.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentViewController:imagePickerCamera animated:YES completion:nil]; } else if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeSavedPhotosAlbum]) { UIImagePickerController *imagePickerAlbum =[[UIImagePickerController alloc] init]; imagePickerAlbum.delegate = self; imagePickerAlbum.mediaTypes = [NSArray arrayWithObjects:(NSString *) kUTTypeImage,nil]; imagePickerAlbum.allowsEditing = YES; imagePickerAlbum.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; [self presentViewController:imagePickerAlbum animated:YES completion:nil]; } 
+1
source

Similar to the answers above, but I found it easier. Show a pop-up warning if the device does not have a camera (for example, a simulator). Sam code, various uses:

 //button if to take a photo - (IBAction)takePhoto:(id)sender { //checks if device has a camera if (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { UIAlertView *noCameraAlert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You don't have a camera for this device" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; //shows above alert if there no camera [noCameraAlert show]; } //otherwise, show a modal for taking a photo else { UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; imagePicker.delegate = self; imagePicker.allowsEditing = YES; imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentViewController:imagePicker animated:YES completion:NULL]; } } 
0
source

Source: https://habr.com/ru/post/907826/


All Articles