Sau khi nhìn thấy cùng một vấn đề,
tôi chuyển từ
ZBarReaderViewController
đến
ZBarReaderView
Phần đáng thất vọng điều này, tuy nhiên, là nếu bạn đang sử dụng các tính năng như Overlay trong ZBarReaderViewController, bạn phải mã hóa lại làm thế nào mà tất cả các công trình và bạn phải thực hiện những thứ như bắt đầu và dừng máy quét, bằng tay.
Nhưng về cơ bản, bạn cần một cái gì đó như thế này trong IBAction của bạn:
ZBarReaderView *reader = [ZBarReaderView new];
[self.view addSubview:reader];
reader.readerDelegate = self;
reader.tracksSymbols=YES;
ZBarImageScanner *scanner = reader.scanner;
reader.tag = 99999999;
// phần quan trọng ở đây là để bắt đầu quét
[reader start];
Ngoài ra, hãy nhớ thay đổi đại diện của bạn trong header to ZBarReaderViewDelegate
Ngoài ra, ủy nhiệm "phương thức" được gọi, ít nhất là trong mã của tôi, bây giờ là (so với 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];
}
Vì vậy, đó là cách nhanh chóng và dơ bẩn để thực hiện việc này. Tôi có một số mã bổ sung cho việc tạo lớp phủ theo cách thủ công và để hạn chế việc quét hình ảnh nhưng theo cách đơn giản là nó đang chạy, điều này đã làm cho tôi một mẹo.
người dùng zbar khác cũng phải đối mặt với cùng một vấn đề. đây là liên kết - https://sourceforge.net/p/zbar/discussion/1072195/thread/df4c215a/#b4cc – RGRG