Ios 前摄像头上的操作表未响应

Ios 前摄像头上的操作表未响应,ios,objective-c,ipad,Ios,Objective C,Ipad,我已经设置了一个操作表,返回3个选项(拍照、从galery中选择和取消)。拍照时,前摄像头会出现并完美地拍照,但问题是当我再次拍照时,它不会显示前摄像头,而是显示后摄像头。 代码如下: - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { CustomImagePickerController *imagePicker = [[CustomImag

我已经设置了一个操作表,返回3个选项(拍照、从galery中选择和取消)。拍照时,前摄像头会出现并完美地拍照,但问题是当我再次拍照时,它不会显示前摄像头,而是显示后摄像头。 代码如下:

- (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];
    }
我在代码中有更多的东西,但是主要的动作设置在那里

有什么不对劲吗?
感谢

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

或者每次都检查摄像头设备

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

    }

在“[self-presentViewController:imagePicker animated:YES completion:nil];”中,它向我显示了一条警告,告诉我:未找到实例方法(返回类型默认为id),我尝试了你的代码,但没有解决它:(是的,我正在使用它。我如何每次都检查?将你的
imagePicker
作为类的属性,如下所示?@property(非原子,保留)UIImagePickerController*imagePicker;
if(buttonIndex == 0)
    {
        if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
        {
            imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
            [imagePicker setCameraDevice:UIImagePickerControllerCameraDeviceFront];
        }

    }