0

我设置了一个操作表,它在拍照时返回 3 个选项(拍照、从图库中选择和取消),前置摄像头出现并完美拍照,但问题是当我再次拍照时,它没有给我看正面摄像头,它给我看后置摄像头。这是代码:

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{   
    CustomImagePickerController *imagePicker = [[CustomImagePickerController alloc] init];
    [imagePicker setDelegate:self];
    [imagePicker setAllowsEditing:YES];

    if(buttonIndex == 0) {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypeCamera];
        [imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
    } else if(buttonIndex == 1) {
        [imagePicker setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    }

我在代码中有更多内容,但主要操作设置在那里。

有什么问题吗?谢谢

4

2 回答 2

1

可能发生这种情况的原因是,当您第一次启动相机时 AVCaptureSession ,在关闭控制器后可能会在后台继续运行。所以下次你展示它时,它试图添加前置摄像头但它很忙,所以它转到下一个可用的(后置摄像头),中断自己(从而释放前一个)等等。如果您使用的是 ARC,那么最好将其imagePicker用作您使用它的类的属性。

或每次检查相机设备

if(buttonIndex == 0)
    {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
        }

    }
于 2013-03-13T15:27:09.737 回答
0
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
    CustomImagePickerController *imagePicker = [[CustomImagePickerController alloc] init];
[imagePicker setDelegate:self];
[imagePicker setAllowsEditing:YES];

    if(buttonIndex == 0)
    {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
        }
        else
        {
            imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
            [imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
        }

         [self presentViewController:imagePicker animated:YES completion:nil ];

    }
    else if (buttonIndex==1)
    {
        imagePicker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
        [self presentViewController:imagePicker animated:YES completion:nil ];

    }
}
于 2013-03-13T15:18:18.747 回答