2011-12-28 17 views
5

Sto lavorando a un'app che l'utente può selezionare se desidera scansionare un codice a barre o scattare una foto di qualcosa. Per scattare una foto sto usando il UIImagePickerController come al solito. Per la scansione del codice a barre sto utilizzando ZbarSDK 1.2 ZBarReaderViewController.La fotocamera dell'iPhone perde la messa a fuoco automatica quando si utilizza ZBarSDK

Quando si scatta una foto, tutto funziona perfettamente. Durante la scansione di un codice a barre: Se si avvia l'applicazione e si scansiona un codice a barre prima dello scattare una foto, funziona anche perfettamente.

Ma si scatta una foto, quindi si torna indietro e si prova a scansionare un codice a barre, la fotocamera perde la messa a fuoco automatica ed è semplicemente impossibile scansionare un codice a barre.

In sintesi:
Start -> Scan ->Messa a fuoco automatica di lavoro
Start -> Scatta foto -> Back -> Scan ->automatica non fuoco lavorare

Questo è come mi inizializzo lo scanner di codici a barre:

-(ZBarReaderViewController *) barcodeScanner 
{ 
    if (nil == _barcodeScanner) 
    { 
     _barcodeScanner = [ZBarReaderViewController new]; 
     _barcodeScanner.readerDelegate = self; 
     _barcodeScanner.cameraMode = ZBarReaderControllerCameraModeSampling; 
     _barcodeScanner.sourceType = UIImagePickerControllerSourceTypeCamera; 
    } 
    return _barcodeScanner; 
} 

Qualche idea?

risposta

4

Prima di caricare ZBarReaderViewController assicurati di rilasciare UIImagePickerController, e prima di caricare UIImagePickerController assicurati di rilasciare ZBarReaderViewController.

Mi ci sono voluti giorni per capire perché continuavo a perdere la capacità di messa a fuoco, e scopro che non stavo rilasciando le cose. Per gli altri che incappano in questa risposta ... Puoi avere solo 1 AVCaptureSession alla volta altrimenti le cose si fanno incostanti e perdi la capacità di concentrarti. ZBarReaderViewController utilizza AVCaptureSession per assicurarti di rilasciarlo prima di inizializzare una nuova AVCaptureSession.

+1

Ci proverò ... Sono già venuto in pace con il fatto che non avrò una risposta per questo ... –

0

Vorrei approfondire l'implementazione della foto. Prova a controllare se chiudi la risorsa correttamente quando hai finito di scattare la foto. Non penso che l'implementazione di zBar abbia a che fare con questo ...

+0

Il punto è: non ho implementato "Scattare foto" ... Sto solo inizializzando UIImagePickerController, lo presenta modally e ricevo la richiamata quando è stata scattata la foto. Io non sto facendo niente di strano. –

1

Abbiamo dovuto affrontare lo stesso problema con Zbar, l'abbiamo risolto mettendo un ritardo di 2 secondi prima di ignorare la vista del modello.

Problemi correlati