@djromeroが言ったように、を使用することで解決策がありますAVFoundation(ただし、代わりにではありません 。通知を返すために使用するだけです)。UIImagePickerControllerAVFoundation
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(cameraIsReady:)
name:AVCaptureSessionDidStartRunningNotification object:nil];
そして、カメラの準備ができたら、通知を受け取ります。
- (void)cameraIsReady:(NSNotification *)notification
{
NSLog(@"Camera is ready...");
// Whatever
}
takePictureプレゼンテーションの後UIImagePickerControllerで(「カメラの準備ができていません」というメッセージが表示された場合)、通知コールバック内で呼び出してテストしたところ、魅力のように機能しました。
補足:
[camera isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]Yes使用可能なカメラデバイスがあることを確認するだけなので、常に戻ります。実際のところ、Appleは、コントローラを初期化して提示する前に、これが返さYesれることと、nil以外のデリゲート(dismiss標準インターフェイスを介してピッカーにアクセスする方法を提供するため)があることを常に確認する必要があることをお勧めします。