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 に答える