6

UIImagePickerView を使用して、ユーザーがカメラで写真を撮るか、UIImagePickerView を使用してカメラロールから写真を選択できるようにするアプリケーションがあります。

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

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

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

理由はありますか?

4

3 に答える 3

6

カメラ フィードとは異なるソースを使用している iPad では、ポップオーバーに UIImagePickerController を表示しているので、好きなだけ使用できます。しかし、ソースを取得しようとするとUIImagePickerControllerSourceTypeCamera、ピッカー ウィンドウがフル スクリーンで表示され、次の 2 つのケースがあります。

  1. カスタム コントロール (showsCameraControls = NO) を使用すると、同じコントローラーで好きなだけ写真を撮ることができます。
  2. デフォルトのコントロール (showsCameraControls = YES) を使用する場合、1 枚の写真を撮った後、コントローラーは再び使用できなくなるため、コントローラーを破棄する必要があります。写真を撮った後、スタックに次のコントローラーを置いています。その後、ピッカーコントローラーに戻ろうとしていますが、使用できなくなり、黒い画面が表示されます。

の Apple ドキュメントimagePickerController:didFinishPickingMediaWithInfo::

イメージ ピッカーの showsCameraControls プロパティを NO に設定し、独自のカスタム コントロールを提供すると、イメージ ピッカー インターフェイスを閉じる前に複数の写真を撮ることができます。ただし、そのプロパティを YES に設定した場合、デリゲートは、ユーザーが写真を 1 枚撮影するか操作をキャンセルした後、イメージ ピッカー インターフェイスを閉じる必要があります。

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

これが役立つことを願っています。

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

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [self dismissViewControllerAnimated:NO completion:^{
        [self presentViewController:<newController> animated:YES completion:nil];
    }];
}
于 2013-05-14T14:43:49.317 に答える
1

UIImagePicker を通常どおり閉じてみることができます。Pre-viwer View Controller が viewWillDesapear をアクティブにすると、以前の viewController に、viewWillAppear のときに UIImagePicker が再び表示されることを「伝えます」。うまくいくと思います。

于 2013-05-13T18:37:14.290 に答える