Dopo aver visto lo stesso problema,
mi sono trasferito da
ZBarReaderViewController
a
ZBarReaderView
La parte deludente di questo, però, è che se si sta utilizzando funzioni come Overlay nel ZBarReaderViewController, si deve ricodificare come che tutte le opere e si deve implementare cose come avviare e arrestare lo scanner, manualmente.
Ma in sostanza, avete bisogno di qualcosa di simile nel IBAction:
ZBarReaderView *reader = [ZBarReaderView new];
[self.view addSubview:reader];
reader.readerDelegate = self;
reader.tracksSymbols=YES;
ZBarImageScanner *scanner = reader.scanner;
reader.tag = 99999999;
// la parte importante qui è quello di avviare la scansione
[reader start];
Inoltre, ricordarsi di cambiare il delegato nella vostra header to ZBarReaderViewDelegate
Inoltre, il "metodo" delegato che viene chiamato, almeno nel mio codice, è ora (rispetto a imagePickerController)
-(void) readerView: (ZBarReaderView*) view
didReadSymbols: (ZBarSymbolSet*) syms
fromImage: (UIImage*) img
{
for(ZBarSymbol *sym in syms) {
[view stop];
[self closeCameraScanner];
// I am also setting reader to NIL but I don't really know if this is necessary or not.
reader=nil;
}
}
-(void)closeCameraScanner{
UIView * v = [self.view viewWithTag:99999999];
if (nil != v) {
[v removeFromSuperview];
}
[self.view endEditing:YES];
}
Quindi, questo è un modo veloce e sporco per farlo. Ho un po 'di codice aggiuntivo per creare manualmente l'overlay e per limitare la scansione, ma per quanto riguarda semplicemente farlo funzionare, questo è stato il trucco per me.
anche gli altri utenti zbar affrontano lo stesso problema. ecco il link - https://sourceforge.net/p/zbar/discussion/1072195/thread/df4c215a/#b4cc – RGRG