Я пытаюсь интегрировать zxing в мое уже существующее приложение для iPhone. Я сослался на пример ScanTest, включенный в загрузку проекта, и сумел построить и запустить сканер.
Моя проблема заключается в управлении представлениями проекта для включения сканера. В настоящее время у меня уже есть контроллер представления (VC-A), который нуждается в способности сканера. Я создал новый контроллер вида (VC-B) для запуска вида сканера ZXingWidgetController
. Итак, поток выглядит следующим образом:
VC-A-> presentModalViewController (VC-B) -> VC-B->
presentModalViewController (ZXingWidgetController)
Теперь, как и в примере приложения ScanTest, когда сканирование завершено, из VC-B вызывается dismissModalViewController, который отклоняет представление ZXingWidgetController. Проблема в том, как бы я ни пытался, я не могу уволить VC-B и вернуться в VC-A. Я создал набор методов делегата для уведомления VC-A, когда сканирование завершено / отменено. Я получаю данные сканирования этими методами, но не могу отклонить представление VC-B.
Я не хочу модифицировать свой уже существующий контроллер представления VC-A, поэтому я не могу включить в него непосредственно ZXingWidgetController, полностью отбрасывая VC-B (потому что для этого потребуется сделать VC-A файлом .mm).
EDIT:
Теперь я покончу с модальным ZXingWidgetController, в целом. Используя этот код в viewDidLoad
на VC-B
//Create custom overlay
OverlayView *scannerView = [[OverlayView alloc]initWithFrame:CGRectMake(27, 107, 267, 253) cancelEnabled:NO oneDMode:NO];
scannerView.displayedMessage = nil;
widController = [[ZXingWidgetController alloc]init ];
//set the overlay of widController
[widController setOverlayView:scannerView];
QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
[qrcodeReader release];
widController.readers = readers;
widController.delegate = self;
[readers release];
[scannerView release];
NSBundle *mainBundle = [NSBundle mainBundle];
widController.soundToPlay = [NSURL fileURLWithPath:[mainBundle pathForResource:@"beep-beep" ofType:@"aiff"] isDirectory:NO];
//Add scanner to the view
[self.view addSubview:widController.view];
Теперь вид с камеры ZXingWidgetController вообще не виден. Кто-нибудь настраивал оверлей для Zxing? Похоже, я не вижу подобной проблемы на SO.