ZXingObjc 集成 IOS,但根本不起作用 [英] ZXingObjc Integration IOS ,but didn't work at all
问题描述
我已经集成了ZXingObjc
框架,以及ViewController
作为RootViewController
.ViewController.m
中的代码如下:
I have integrated the ZXingObjc
framework,and ViewController
as the RootViewController
.
the codes in ViewController.m
follows:
#import <AudioToolbox/AudioToolbox.h>
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic, strong) ZXCapture *capture;
@property (nonatomic, weak) IBOutlet UIView *scanRectView;
@property (nonatomic, weak) IBOutlet UILabel *decodedLabel;
@end
@implementation ViewController
#pragma mark - View Controller Methods
- (void)dealloc {
[self.capture.layer removeFromSuperlayer];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.capture = [[ZXCapture alloc] init];
self.capture.camera = self.capture.back;
self.capture.focusMode = AVCaptureFocusModeContinuousAutoFocus;
self.capture.rotation = 90.0f;
self.capture.layer.frame = self.view.bounds;
[self.view.layer addSublayer:self.capture.layer];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.capture.delegate = self;
self.capture.layer.frame = self.view.bounds;
self.capture.scanRect = self.scanRectView.frame;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return toInterfaceOrientation == UIInterfaceOrientationPortrait;
}
#pragma mark - Private Methods
- (NSString *)barcodeFormatToString:(ZXBarcodeFormat)format {
switch (format) {
case kBarcodeFormatAztec:
return @"Aztec";
case kBarcodeFormatCodabar:
return @"CODABAR";
case kBarcodeFormatCode39:
return @"Code 39";
case kBarcodeFormatCode93:
return @"Code 93";
case kBarcodeFormatCode128:
return @"Code 128";
case kBarcodeFormatDataMatrix:
return @"Data Matrix";
case kBarcodeFormatEan8:
return @"EAN-8";
case kBarcodeFormatEan13:
return @"EAN-13";
case kBarcodeFormatITF:
return @"ITF";
case kBarcodeFormatPDF417:
return @"PDF417";
case kBarcodeFormatQRCode:
return @"QR Code";
case kBarcodeFormatRSS14:
return @"RSS 14";
case kBarcodeFormatRSSExpanded:
return @"RSS Expanded";
case kBarcodeFormatUPCA:
return @"UPCA";
case kBarcodeFormatUPCE:
return @"UPCE";
case kBarcodeFormatUPCEANExtension:
return @"UPC/EAN extension";
default:
return @"Unknown";
}
}
#pragma mark - ZXCaptureDelegate Methods
- (void)captureCameraIsReady:(ZXCapture *)capture
{
NSLog(@"%s,%d",__FUNCTION__,__LINE__);
}
- (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result {
if (!result) return;
NSLog(@"%s,%d",__FUNCTION__,__LINE__);
// We got a result. Display information about the result onscreen.
NSString *formatString = [self barcodeFormatToString:result.barcodeFormat];
NSString *display = [NSString stringWithFormat:@"Scanned!\n\nFormat: %@\n\nContents:\n%@", formatString, result.text];
[self.decodedLabel performSelectorOnMainThread:@selector(setText:) withObject:display waitUntilDone:YES];
// Vibrate
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
[self.capture stop];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 2 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[self.capture start];
});
}
@end
我发现方法 - (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result
根本不起作用.
I found that the mothod - (void)captureResult:(ZXCapture *)capture result:(ZXResult *)result
doesn't work at all.
接下来,我把它放在ZXingObjc的例子中的相同代码,它运行良好.我真的不知道我怎么了.希望得到您的帮助!
Next,the same codes i put it into the example of ZXingObjc,it works well. I really don't know what's wrong with me. Wish your help!
推荐答案
我遇到了同样的问题.在我的情况下,视图控制器会启动,但永远不会检测到条形码.结果我需要将-ObjC"添加到其他链接器标志".
I had the same problem. In my situation, the view controller would launch, but would never detect a barcode. Turns out I needed to add '-ObjC' to 'Other Linker Flags'.
参考:https://developer.apple.com/library/ios/technotes/iOSStaticLibraries/Articles/configuration.html
这篇关于ZXingObjc 集成 IOS,但根本不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!