2015-05-21 17 views
-1

我已將ZXingObjc框架和ViewController集成爲RootViewController。 在ViewController.m代碼如下:ZXingObjc集成IOS,但根本沒有工作

#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的例子中,它的效果很好。 我真的不知道我的錯在哪裏。 祝你的幫助!

+0

搜索演示和您的項目之間的差異。我剛纔試了一下,它的工作原理 – Azat

+0

你說什麼都沒有 – Busen

+0

你有沒有找到解決方案?我有完全相同的問題 – shorty

回答

0

您的Viewcontroller.h文件是否採用ZXCapture協議?事情是這樣的:

//ViewController.h  
    @interface ViewController: NSObject <ZXCaptureDelegate> //<---- this guy 

    - (void)yourFunction; 
    - (void)anotherFunction; 

    @end 

(我不知道什麼是它的真名)

+0

年,當然。 – Busen

相關問題