1

バーコード スキャンを使用している IPad アプリケーションがあります。バーコードのスキャンに ZBarSDK を使用しています。このように、スキャン ビューを表示しています。

// 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はそのデータを取得するための私の機能です.すべてが完全に機能しています.しかし、私の問題は、オーバーレイをスキャンするために押されたボタンが来るが、そのオーバーレイ内のさまざまな緑色の境界線でスキャンを許可しなかったときに、スキャンした後です.スキャンが既に完了したように表示されているキャンセル。それは、スキャンから移動する次のページにあります。なぜこれが起こっているのか誰にも分かりますか?

4

1 に答える 1

-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];
}
于 2012-09-17T07:43:20.200 に答える