iPhone zXing QR Scanner - функция didscanresult никогда не срабатывает

Я загрузил проект zXing в свой собственный. Загружается нормально, сканер zXing выскакивает после нажатия кнопки.

Я могу отклонить контроллер представления на zxingControllerDidCancel, но когда я сканирую QR-код, никакие коды не распознаются, и поэтому функция didScanResult никогда не срабатывает.

Кто-нибудь знает об этом?

Ниже приведена функция didScanResult.

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

}

Примечание. Я не уверен, что это актуально, но когда сканер запускается, приложение регистрирует это: «wait_fences: не удалось получить ответ: 10004003».


person Scott McConnell    schedule 08.09.2012    source источник
comment
Не могли бы вы опубликовать, как вы создаете и показываете ZXingWidgetController?   -  person Aaron Wojnowski    schedule 08.09.2012
comment
В основном я прошел через это руководство по добавлению его в свой проект (yannickloriot.com/2011/04/how-to-install-zxing-in-xcode-4) Поэтому я импортировал их в свой файл viewcontrollers .h. Использовал функции didScanResult и zxingControllerDidCancel из ZXingDelegate. zxingControllerDidCancel отлично работает, как было сказано ранее. Это помогает?   -  person Scott McConnell    schedule 09.09.2012
comment
Посмотрите этот вопрос, чтобы устранить ошибку 10004003.   -  person Daniel    schedule 25.09.2012
comment
В этом руководстве не упоминается, что вы должны добавить QRCodeReader в набор считывателей вашего ZXingWidgetController.   -  person ilmiacs    schedule 26.09.2012
comment
@ilmiacs Спасибо за это. Но что именно это означает?   -  person Scott McConnell    schedule 27.09.2012


Ответы (1)


В этом руководстве не упоминается, что вы должны добавить QRCodeReader в набор читателей вашего ZXingWidgetController.

ZXingWidgetController имеет свойство под названием readers, которое представляет собой NSSet, содержащее экземпляры читателей (например, экземпляр QRCodeReader). Грубо говоря, задача читателей - анализировать снимки, снятые камерой, и извлекать закодированную информацию. Ваш ZXingWidgetController должен знать о читателях, которых он должен использовать, иначе у него не будет шансов сделать что-нибудь значимое. Таким образом, вы должны установить свойство readers перед тем, как представить ZXingWidget.

В проекте ZXing есть пример приложения, которое демонстрирует это. Если вы используете ARC, то

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];

стоит сделать.

person ilmiacs    schedule 27.09.2012
comment
Вы точно чемпион! Большое спасибо за вашу помощь - теперь все работает отлично :) - person Scott McConnell; 27.09.2012