NAZIK NAZIK - 5 months ago 76
Objective-C Question

QR Code Scanning in ios application

I need to integrate QR-code reader in app and found a tutorial for it.

I downloaded Z-bar sdk from this link.

Here is what I had done.

In the QRscannerViewController.m

-(IBAction)StartScan:(id) sender
ZBarReaderViewController *reader = [ZBarReaderViewController new];
reader.readerDelegate = self;

reader.readerView.torchMode = 0;

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

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

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


- (void) readerControllerDidFailToRead: (ZBarReaderController*) reader
withRetry: (BOOL) retry{
NSLog(@"the image picker failing to read");


- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info

NSLog(@"the image picker is calling successfully %@",info);
// ADD: get the decode results
id<NSFastEnumeration> results = [info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
NSString *hiddenData;
for(symbol in results)
NSLog(@"the symbols is the following %@",;
// EXAMPLE: just grab the first barcode
// break;

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

NSLog(@"BARCODE= %@",;

NSUserDefaults *storeData=[NSUserDefaults standardUserDefaults];
[storeData setObject:hiddenData forKey:@"CONSUMERID"];
NSLog(@"SYMBOL : %@",hiddenData);
[reader dismissModalViewControllerAnimated: NO];


All needed frameworks were added, so there is no
referenced from

When I click the scan button, the ZBarReaderViewController appears well and I hold the alt key and left click the mouse to open the photo library of simulator and all works fine.

What the problem is,

  1. The QR image is not get scanned, ie
    (UIImagePickerController*) reader didFinishPickingMediaWithInfo

    function is not get called.

  2. The QR image appears larger than its original size.

enter image description here

How to solve this?

Why the image not get scanned?


use ZBar SDK for BR and QR code scanning in our iPhone application.

you can find step by step article for this, how to do with sample code as well

How to use Barcode Scanner (BR and QR) in iPhone Tutorial (using ZBar)

see how it works

  1. download ZBar SDK from here

  2. add below frameworks in your project

    • AVFoundation.framework
    • CoreGraphics.framework
    • CoreMedia.framework
    • CoreAudio.framework
    • CoreVideo.framework
    • QuartzCore.framework
    • libiconv.dylib
  3. Add the library downloaded libzbar.a of zip in the frameworks

  4. import header in your class and confirm it's delegate

    #import "ZBarSDK.h"


@interface ViewController : UIViewController <ZBarReaderDelegate>

5.scan image

- (IBAction)startScanning:(id)sender {

    resultTextView.text = @"Scanning..";

    ZBarReaderViewController *codeReader = [ZBarReaderViewController new];
    codeReader.supportedOrientationsMask = ZBarOrientationMaskAll;

    ZBarImageScanner *scanner = codeReader.scanner;
    [scanner setSymbology: ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];

    [self presentViewController:codeReader animated:YES completion:nil];    


6.get the result in

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

    ZBarSymbol *symbol = nil;
    for(symbol in results)
        // just grab the first barcode

    // showing the result on textview
    resultTextView.text =;    

    resultImageView.image = [info objectForKey: UIImagePickerControllerOriginalImage];

    // dismiss the controller 
    [reader dismissViewControllerAnimated:YES completion:nil];

Hope this will help you, also let me know if you find any trouble in this example, Happy to help

Official Docs