3

アプリ内で奇妙な動作が発生しています。写真を撮るために、UIImagePickerController を表示するために次のかなり標準的なコードを使用しています。

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentViewController:picker animated:YES completion:nil];

このアクションを呼び出すボタンを初めてタップすると、完全に正常に機能します。そのボタンをもう一度タップすると、奇妙な動作が始まります。UIImagePickerController が再び開始されますが、カメラからの入力が表示されなくなります。それは私が撮った最後の写真を示しています。

この状態の詳細:

  • 画像をタップすると、オートフォーカスの黄色い四角が表示されます。(実際にカメラの焦点を合わせるために使用されます)
  • ImageCapture ボタンをタップすると、正しい画像が取得され、画面に表示されます。
  • 写真を撮って「再撮影」を押すと、通常のカメラ画像が入力として表示されます。

さらに奇妙なことに、私が使用している iPad とは何の関係もありません。すべての上からコードを呼び出すボタンのみを持つ新しいサンプルアプリを作成すると、完全に正常に機能します。

アプリの設定に関係があると思います。したがって、すべてを確認しましたが、この問題を引き起こす可能性のある違いは見つかりませんでした。

アドバイスをよろしくお願いします!

更新: UIImagePickerController を閉じるために、UIImagePickerControllerDelegate を実装します。

4

2 に答える 2

0

私は最終的に問題を見つけました:それは、プロジェクトの別の場所で使用した UIViewController のカテゴリでした。私のプロジェクトでコンパイルするとすぐに、UIImagePickerController が奇妙な動作をしました。それで、UIImagePickerControllerによって内部的にも使用されるメソッド名を何とか使用できたと思います。カテゴリが UIImagePickerController でまったく使用されていないため、まだ少し混乱しています。

于 2013-11-15T12:29:55.730 に答える
0

UIImagePickerController docに関する Apple のドキュメントを読むと、「ユーザーがボタンをタップして、新しくキャプチャまたは保存された画像またはムービーを選択するか、操作をキャンセルすると、デリゲート オブジェクトを使用して画像ピッカーを閉じます。新しくキャプチャされたメディアの場合、デリゲートはデバイスのカメラロールに保存できます。以前に保存されたメディアの場合、デリゲートはアプリの目的に応じて画像データを使用できます。UIImagePickerContriollerDelegate プロトコル メソッドを実装し、既存の UIImagePickerController オブジェクトを適切に破棄する必要があるかもしれません。UIImagePickerControllerDelegateを参照してください

于 2013-11-06T15:48:01.477 に答える