相机没有在运行iOS 8.2的ipad中呈现

时间:2015-09-24 06:29:08

标签: ios iphone ipad uiimagepickercontroller

我正在开发通用应用,想要打开相机。现在我可以在iphone上用UIimagePickerController打开相机但在iPad上却无法正常工作。我搜索了解决方案并找到了此代码

self.cameraController = [[UIImagePickerController alloc] init];
self.cameraController.sourceType = UIImagePickerControllerSourceTypeCamera;


    self.cameraController.modalPresentationStyle = UIModalPresentationCurrentContext;

self.cameraController.showsCameraControls = NO;
self.cameraController.navigationBarHidden = YES;
self.cameraController.wantsFullScreenLayout = NO;

[self.cameraController setCameraOverlayView:ar_overlayView];
[ar_overlayView setFrame:self.cameraController.view.bounds];

UIViewController *vc = [[[[UIApplication sharedApplication] delegate] window] rootViewController];
if([[[UIDevice currentDevice] systemVersion] floatValue]>=8.0 && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{

        [self presentViewController:self.cameraController animated:YES completion:nil];
    }];

}
else{
    [vc presentViewController:self.cameraController animated:YES completion:nil];
}

还遵循了一些教程,如

TechnoTopia Post但是没有找到任何运气。我已经在iphone 5s中进行过测试并且工作正常但是在iPad mini上相机没有显示。任何帮助将不胜感激!

4 个答案:

答案 0 :(得分:1)

试试iPad版

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex==0)
{
     [[NSOperationQueue mainQueue] addOperationWithBlock:^{
 UIImagePickerController* picker=[[UIImagePickerController alloc]init];
    picker.delegate=self;
    picker.allowsEditing=YES;
    picker.sourceType=UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentViewController:picker animated:YES completion:nil];
     }];
}
else if (buttonIndex==1)
{
     [[NSOperationQueue mainQueue] addOperationWithBlock:^{
 UIImagePickerController* picker=[[UIImagePickerController alloc]init];
    picker.delegate=self;
    picker.allowsEditing=YES;
    picker.sourceType=UIImagePickerControllerSourceTypeCamera;
         [self presentViewController:picker animated:YES completion:nil];}];
}
}

答案 1 :(得分:0)

对于iPad,你应该这样做:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
UIPopoverController *popover = [[UIPopoverController alloc] initWithContentViewController:picker];
[popover presentPopoverFromRect:self.selectedImageView.bounds inView:self.selectedImageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
self.popOver = popover;
}else {
[self presentModalViewController:picker animated:YES];
}

.h文件声明:

@property (nonatomic, strong) UIPopoverController *popOver;

你应该处理popover委托:

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 

-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker 

Apple文档: apple link

它声明:

  

“通过调用当前活动视图控制器的presentViewController:animated:completion:方法呈现用户界面,将配置的图像选择器控制器作为新视图控制器传递。在iPad上,使用弹出窗口显示用户界面。仅当图像选择器控制器的sourceType属性设置为UIImagePickerControllerSourceTypeCamera时才有效。“

答案 2 :(得分:0)

- (IBAction)onClickSelectPicture:(id)sender 
{
    if( [UIImagePickerController isCameraDeviceAvailable: UIImagePickerControllerCameraDeviceFront ])
    {
        UIImagePickerController *picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.allowsEditing = YES;
        picker.sourceType=UIImagePickerControllerSourceTypeCamera;
        picker.cameraDevice=UIImagePickerControllerCameraDeviceFront;
        [self presentViewController:picker animated:YES completion:NULL];
    }
    else
    {
        UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"Error"
                                                              message:@"Device has no camera"
                                                             delegate:nil
                                                    cancelButtonTitle:@"OK"
                                                    otherButtonTitles: nil];

        [myAlertView show];
    }
}

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{

    imgProf = info[UIImagePickerControllerEditedImage];
        [viewNewPhoto setImage:imgProf];

    imgProf = [self imageWithImage:imgProf scaledToSize:CGSizeMake(imgProf.size.width/4, imgProf.size.height/4)];

    if (imgProf == nil)
    {
        imgPhotoString = @"NoPhoto";
    }else
    {
        imgPhotoString = [self getStringFromImage:imgProf];
    }

    [picker dismissViewControllerAnimated:YES completion:NULL];
}

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [picker dismissViewControllerAnimated:YES completion:NULL];
}

答案 3 :(得分:0)

试试这段代码:

UIImagePickerController *aImgPickerController = [[UIImagePickerController alloc] init];
aImgPickerController.delegate = self;
aImgPickerController.allowsEditing = YES;

aImgPickerController.sourceType = UIImagePickerControllerSourceTypeCamera;

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [self presentViewController:aImgPickerController animated:NO completion:^{
        NSLog(@"success present picker");
    }];
});