ZXingObjc集成IOS,但根本没有工作

我已经集成了ZXingObjc框架和ViewController作为RootViewControllerViewController.m的代码如下所示:

 #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根本不起作用。

接下来,我把它放在ZXingObjc的例子中,它工作的很好。 我真的不知道我有什么问题。 希望你的帮助!

我有同样的问题。 在我的情况下,视图控制器将启动,但不会检测到条形码。 原来我需要添加'-ObjC'到'其他链接标志'。

参考: https : //developer.apple.com/library/ios/technotes/iOSStaticLibraries/Articles/configuration.html

您的Viewcontroller.h文件是否采用ZXCapture协议? 像这样的东西:

  //ViewController.h @interface ViewController: NSObject <ZXCaptureDelegate> //<---- this guy - (void)yourFunction; - (void)anotherFunction; @end 

(我不确定它的真名是什么)