Come @djromero detto che c'è una soluzione utilizzando AVFoundation
(ma non invece di UIImagePickerController
. Basta usare AVFoundation
per ottenere una notifica indietro).
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(cameraIsReady:)
name:AVCaptureSessionDidStartRunningNotification object:nil];
E poi, una volta che la fotocamera è pronta avete ottenuto il vostro notifica:
- (void)cameraIsReady:(NSNotification *)notification
{
NSLog(@"Camera is ready...");
// Whatever
}
ho appena provato chiamando takePicture
dopo UIImagePickerController
presentazione (dove ho avuto la 'fotocamera non è pronta' messaggio) e proprio all'interno del mio callback di notifica, dove ha funzionato come un fascino.
Side-note:
[camera isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]
restituisce sempre Yes
perché controlla solo che c'è un dispositivo di macchina fotografica a disposizione. Di fatto, Apple consiglia di verificare sempre che questo restituisca Yes
e che si disponga di un delegato non nullo (per fornire un modo per effettuare il dismiss
tramite l'interfaccia standard) prima di provare a inizializzare e presentare il controller.
domanda simile a http://stackoverflow.com/questions/6817920/recored-video-using-uiimagepickercontroller - la risposta selezionata è corretto, ma c'è un'altra risposta che parla di aggiungere un ritardo. Questo è probabilmente un buon punto di partenza. – Tass
Inoltre, consultare http://stackoverflow.com/questions/4377303/uiimagepickercontroller-camera-not-ready - sembra che ci sia un codice di ritorno quando la fotocamera non è pronta. Controlla il risultato, attendi e riprova. – Tass
Spero davvero che un ritardo non sia l'unica strada da percorrere, anche se sembra che sia così. Sicuramente c'è una soluzione migliore ... –