2012-09-17 14 views
1

我已被使用的條形碼的scanning.I iPad應用正在使用ZBarSDK用於掃描barcodes.Like此我提出的掃描view.`在iPhone中掃描很多次後,條形碼readerview會出現兩次?

// ADD: present a barcode reader that scans from the camera feed 
     ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
     reader.readerDelegate = self; 

     reader.supportedOrientationsMask = ZBarOrientationMaskAll; 

     reader.sourceType=UIImagePickerControllerSourceTypeCamera; 
     //reader.cameraDevice = UIImagePickerControllerCameraDeviceFront; 

     reader.cameraOverlayView=cameraOverlay; 

     if([UIImagePickerController isCameraDeviceAvailable:       UIImagePickerControllerCameraDeviceFront ]) 
     { 
      reader.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
     } 
     ZBarImageScanner *scanner = reader.scanner; 

     reader.wantsFullScreenLayout = YES; 
     // TODO: (optional) additional reader configuration here 

     // EXAMPLE: disable rarely used I2/5 to improve performance 

     [scanner setSymbology: ZBAR_I25 
         config: ZBAR_CFG_ENABLE 
          to: 0]; 
     reader.showsZBarControls = NO; 
     // present and release the controller 
     [self temporarilyHideStatusBar]; 
     if(fromscan==YES) 
     { 
      [self presentModalViewController:reader animated:NO]; 
     } 
     else 
     { 
      [self presentModalViewController:reader animated:YES]; 
     } 

     [reader.view addSubview:back]; 
     [back addTarget:self action:@selector(backpressed:) forControlEvents:UIControlEventTouchUpInside]; 

     [reader release]; 

隨後

- (void) imagePickerController: (UIImagePickerController*) reader 
didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    // ADD: get the decode results 
    id<NSFastEnumeration> results = 
    [info objectForKey: ZBarReaderControllerResults]; 
    ZBarSymbol *symbol = nil; 
    for(symbol in results) 
     // EXAMPLE: just grab the first barcode 
     break; 

    //commented blues 
    NSLog(@"%@",symbol.data); 

    [self sdsdsd:symbol.data]; 

    [reader dismissModalViewControllerAnimated:YES]; 


} 

sdssd被我的功能是拍攝這些數據。所有的工作都很完美。但是我的問題是掃描一段時間後,按下掃描覆蓋層的按鈕即將到來,但不允許掃描,覆蓋層內有不同的綠色寄宿生。當我們取消正在顯示,就像掃描已經完成。那是在我下一個頁面goi來自掃描。有誰知道爲什麼會發生這種情況?

+0

我想你的應用程序可能有實際加載的掃描儀控制器連續兩次導致掃描儀看起來像它不工作。嘗試添加布爾標誌來執行類似if(!scannerVisible){scannerVisible = YES; [self showScanner]; }以防止雙重上升。 – Zhang

回答

-1

試試這個

- (IBAction) scanButtonTapped 
{ 
    // ADD: present a barcode reader that scans from the camera feed 
    ZBarReaderViewController *reader = [ZBarReaderViewController new]; 
    reader.readerDelegate = self; 
    reader.supportedOrientationsMask = ZBarOrientationMaskAll; 

    ZBarImageScanner *scanner = reader.scanner; 
    // TODO: (optional) additional reader configuration here 

    // EXAMPLE: disable rarely used I2/5 to improve performance 
    [scanner setSymbology: ZBAR_I25 
        config: ZBAR_CFG_ENABLE 
         to: 0]; 

    // present and release the controller 
    [self presentModalViewController: reader 
          animated: YES]; 

} 

- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info 
{ 
    // ADD: get the decode results 
    id<NSFastEnumeration> results = 
    [info objectForKey: ZBarReaderControllerResults]; 
    ZBarSymbol *symbol = nil; 

    for(symbol in results) 
     // EXAMPLE: just grab the first barcode 
     break; 

    // EXAMPLE: do something useful with the barcode data 
    resultText.text = symbol.data; 

    // EXAMPLE: do something useful with the barcode image 
    resultImage.image = [info objectForKey: UIImagePickerControllerOriginalImage]; 

    // ADD: dismiss the controller (NB dismiss from the *reader*!) 
    [reader dismissModalViewControllerAnimated: YES]; 
} 
+0

笏這是...刪除了我所有的條件? – hacker