2012-09-08 7 views
8

He cargado el proyecto zXing en mi propio proyecto. Se carga bien, el escáner zXing aparece después de una llamada de botón.Escáner QR de iPhone zXing - la función didscanresult nunca se dispara

Puedo descartar el controlador de vista en thezxingControllerDidCancel, pero cuando escaneo un código QR, no se reconocen códigos y, por lo tanto, la función didScanResult nunca se dispara.

¿Alguien tiene alguna idea acerca de esto?

La función didScanResult está a continuación.

-(void)zxingController:(ZXingWidgetController *)controller didScanResult:(NSString *)result{ 
resultLabel.text = result; 
NSLog(@"did scan!!!"); 
[self dismissModalViewControllerAnimated:NO]; 

}

Nota: No estoy seguro si esto es relevante, pero cuando el escáner aparece, me sale esta registrado por la aplicación: "wait_fences: no recibió respuesta: 10004003"

+0

¿Podría publicar cómo crea y muestra el ZXingWidgetController? –

+0

Básicamente encontré este tutorial para agregarlo a mi proyecto (http://yannickloriot.com/2011/04/how-to-install-zxing-in-xcode-4/) Así que los importé a mis viewcontrollers .h archivo Usó las funciones 'didScanResult' y 'zxingControllerDidCancel' de ZXingDelegate. zxingControllerDidCancel funciona perfectamente como se indicó anteriormente. ¿Esto ayuda? –

+0

Mire [esta pregunta] (http://stackoverflow.com/questions/1371346/wait-fences-failed-to-receive-reply-10004003) para resolver el error 10004003. – Daniel

Respuesta

4

Ese tutorial no menciona que debe agregar un QRCodeReader al conjunto de lectores de su ZXingWidgetController.

ZXingWidgetController tiene una propiedad llamada readers, que es un NSSet que contiene las instancias de los lectores (por ejemplo, una instancia de QRCodeReader). A grandes rasgos, la tarea de los lectores es analizar las imágenes que toma su cámara y extraer la información codificada. Su ZXingWidgetController tiene que saber sobre los lectores que debe utilizar, de lo contrario no tiene ninguna posibilidad de hacer algo significativo. Por lo tanto, debe establecer la propiedad readers antes de presentar el ZXingWidget.

El proyecto ZXing tiene una aplicación de muestra que demuestra esto. Si usa ARC, entonces

ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO]; 
QRCodeReader* qRCodeReader = [[QRCodeReader alloc] init]; 
NSSet *readers = [[NSSet alloc] initWithObjects:qRCodeReader,nil]; 
widController.readers = readers; 
[self presentModalViewController:widController animated:YES]; 

debería hacerlo.

+0

¡Seguro que eres un campeón! Muchas gracias por su ayuda. Está funcionando perfectamente ahora :) –

Cuestiones relacionadas