【问题标题】:Capturing an image from camera on iPad [duplicate]从 iPad 上的相机捕获图像 [重复]
【发布时间】:2013-01-22 14:58:58
【问题描述】:

已创建用于从相机捕获图像的应用程序。这是我的代码

-(IBAction) showCameraUI {
    BOOL hasCamera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera];
    UIImagePickerController* picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.sourceType = hasCamera ? UIImagePickerControllerSourceTypeCamera :    UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentModalViewController:picker animated:YES];
}

并实现了这个委托方法来获取捕获的图像

- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    [picker dismissModalViewControllerAnimated:YES];
    UIImage* image = [info objectForKey:UIImagePickerControllerOriginalImage];
    UIImage *yourImageView = image;
}

如果用户取消控制器,则实现此方法

- (void)imagePickerControllerDidCancel:(UIImagePickerController*)picker
{
    [picker dismissModalViewControllerAnimated:YES];
}

但它显示了这个异常。有谁知道为什么在执行最后一行函数 showCameraUI 后会显示这样的异常。

UIStatusBarStyleBlackTranslucent 在此设备上不可用。 2013-02-07 10:06:06.976 CaptureImage[460:c07] * 由于未捕获的异常而终止应用程序 'NSInvalidArgumentException',原因:'在 iPad 上,UIImagePickerController 必须是 通过 UIPopoverController 呈现

【问题讨论】:

  • '在 iPad 上,UIImagePickerController 必须通过 UIPopoverController 呈现'
  • 我试过了,但仍然出现异常
  • 它显示 'NSGenericException' 原因:'-[UIPopoverController dealloc] 在弹出窗口仍然可见时达到@Jeff
  • 嗯,这个错误也是不言自明的?
  • 哇...魔术stackoverflow.com/questions/14744927/… ......相同相同:P:P:P

标签: ios ipad ios5 ios6 ios-simulator


【解决方案1】:

请试试这个

// 从相册中选择一张图片

- (IBAction)imageFromAlbum:(id)sender
{
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    [self presentViewController:imagePicker animated:YES completion:nil];
}

// 用相机拍照

- (IBAction)imageFromCamera:(id)sender
{
    imagePicker = [[UIImagePickerController alloc] init];
    imagePicker.delegate = self;
    imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
    imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
    [self presentViewController:imagePicker animated:YES completion:nil];
}


//  Dismiss the image picker on selection and use the resulting image in our ImageView


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(    UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
    [imagePicker dismissModalViewControllerAnimated:YES];
    [imageField setImage:image];
}

// 取消时,只关闭选择器控制器

- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker
{
    [imagePicker dismissModalViewControllerAnimated:YES];
}

【讨论】:

    【解决方案2】:
    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
    self.imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
                    [self presentModalViewController:self.imgPicker animated:YES];
     }
    
    - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
        [self.imgPicker dismissModalViewControllerAnimated:TRUE]; 
    
       [self performSelectorInBackground:@selector(DoImageConversionInBackGround:) withObject:img ];
        }    
    }
    

    【讨论】:

      猜你喜欢
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 2019-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多