6

私はUIImagePickerViewを使用してカメラで写真を撮るか、UIImagePickerViewを使用してカメラのロールから1つを選択できるアプリケーションがあります。カメラモードのUIImagePickerViewは、iPad上のdismissViewControllerですべて黒色を表示します

画像を取得した後、[picker presentViewController:myViewController animated:YES completion:nil]を使用して、ピッカーの上に別のダイアログを表示します。

[myviewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]を使用してmyViewControllerを却下すると、自分のアプリをiPhoneアプリとして実行すると、別の写真を撮るためにCameraRollまたはCameraFeedが表示されます。

しかし、iPadでは、画像を選択すると機能しますが、カメラのフィードを使用して写真を撮っていると、黒い画面が表示されます。

理由は何ですか?

+0

追加のビューコントローラはいつ表示されますか?ユーザーが「使用」ボタンをタップした後私はそれを試み、余分なコントローラを却下した後、すべてのボタンが無効になっているので、その段階でイメージピッカーで他のことをすることはできませんが、選択した画像(yes、ipad)を表示していました。あなたのUIPickerDelegateメソッドのコードサンプルを提供したいですか? – bazik

+0

ユーザーが「使用」をタップした後、デリゲートの ' - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info'コールが表示されます。このメソッドでは、私が気にする画像を 'info'から取得し、' myviewcontroller'に渡します。次に、[[myViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil]を呼び出してmyViewControllerを閉じると、黒い画面が表示されます。私は別の写真を撮る。 – Liron

答えて

6

カメラフィードと異なるソースを使用している場合は、UIImagePickerControllerをポップオーバーに表示していて、望みどおりに使用できます。しかし、あなたがソースUIImagePickerControllerSourceTypeCameraピッカーウィンドウをピックアップすることを決定したときにフルスクリーンを提示され、あなたは2例があります:あなたはカスタムコントロールを使用する場合は

  1. をしたいとあなたが できるだけ多くの写真を撮ることはできません(= NO showsCameraControls)同じコントローラで
  2. の画像を1枚取った後、デフォルトのコントロール(showsCameraControls = YES)を使用した場合は、もう一度使用できないのでコントローラを無視しなければなりません。これはあなたのケースです。 次のコントローラーを写真に撮った後にスタックに入れます。その後、 はあなたのピッカーコントローラーに戻そうとしていますが、もう使用できません。 これ以上黒い画面が表示されます。 imagePickerController:didFinishPickingMediaWithInfo:ため

アップルのドキュメント:あなたはNOに画像ピッカーのshowsCameraControlsプロパティを設定し、 独自のカスタムコントロールを提供する場合

、あなたは画像ピッカーインターフェイスを却下する前に複数の画像 を取ることができます。ただし、その プロパティをYESに設定した場合、ユーザーが画像を1枚取るか、操作をキャンセルした後に、デリゲートは画像ピッカーインターフェイス を閉じる必要があります。

この場合、別の画像を撮りたい場合は、ベースコントローラに戻ってもう一度UIImagePickerControllerインスタンスを作成する必要があります。

こちらがお役に立てば幸いです。

編集: IMOは、ビューコントローラのスタックを再構築する最も簡単な方法は、アニメーションなしで写真を撮った後にピッカーを外し、その後にアニメーションで次のコントローラを表示することです。ピッカーコントローラーの直後に「点滅」することなく次のコントローラーが表示されることをユーザーに感じさせます。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    [self dismissViewControllerAnimated:NO completion:^{ 
     [self presentViewController:<newController> animated:YES completion:nil]; 
    }]; 
} 
1

通常はUIImagePickerを無効にしてみてください.vreview前コントローラがviewWillDesapearをアクティブにすると、viewWillAppearのときにUIImagePickerが再び表示されるという前のviewControllerに "言う"ことができます。私はそれが動作すると思います。

+0

これは私が現在やっていることです、基本的には。 viewDidAppearで表示しています(viewWillAppearで表示するようには働いていないと思います)。問題は、カメラビューが再び表示される前に、以前のView Controllerが点滅していることを確認することです。 – Liron

1

私はアプリで同様の問題がありました。私はiPad用のモーダルではなく、ポップオーバーコントローラでカメラ用の画像ピッカーを提示しました。私はこれがあなたのアプリではうまくいくかどうかは分かりませんが、それは別のアプローチです。私はこのようにそれをすることに問題はなく、ずっとそれを好きだった。

+0

ええ、多分私はそれをやるでしょう。それは少なくとも、ユーザーがカメラのロールから写真を選んだときと新しい写真を撮るときの間に幾つかの対称性を生み出すだろう。私が本当に望んでいた流れではありませんが、おそらくそれはしなければならないでしょう。 – Liron

関連する問題