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
config: ZBAR_CFG_ENABLE
to: 0];
// present and release the controller
[self presentModalViewController: reader
animated: YES];
[reader release];
resultTextView.hidden=NO;
}
- (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)
hiddenData=[NSString stringWithString:symbol.data];
NSLog(@"the symbols is the following %@",symbol.data);
// EXAMPLE: just grab the first barcode
// break;
// EXAMPLE: do something useful with the barcode data
//resultText.text = symbol.data;
resultTextView.text=symbol.data;
NSLog(@"BARCODE= %@",symbol.data);
NSUserDefaults *storeData=[NSUserDefaults standardUserDefaults];
[storeData setObject:hiddenData forKey:@"CONSUMERID"];
NSLog(@"SYMBOL : %@",hiddenData);
resultTextView.text=hiddenData;
[reader dismissModalViewControllerAnimated: NO];
}
All needed frameworks were added, so there is no referenced from
errors.
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,
- The QR image is not get scanned, ie
imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo
function is not get called. - The QR image appears larger than its original size.
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
see how it works
download ZBar SDK from here
add below frameworks in your project
Add the library downloaded libzbar.a of zip in the frameworks
import header in your class and confirm it's delegate
#import "ZBarSDK.h"
and
5.scan image
6.get the result in
Hope this will help you, also let me know if you find any trouble in this example, Happy to help
Official Docs
FIrst import ZXingWidget library from here.
Try this ,
and Delegate
As with the release of
iOS7
you no longer need to use an external framework or library. The iOS ecosystem with AVFoundation now fully supports scanning almost every code from QR over EAN to UPC.Just have a look at the Tech Note and the AVFoundation programming guide.
AVMetadataObjectTypeQRCode
is your friend.Here is a nice tutorial which shows it step by step: iPhone QR code scan library iOS7
Just a little example on how to set it up:
Try this on iOS 7 and newer.
To capture QR code:
To read, use its delegate method:
You can use my own framework for QRCodeReader.
https://www.cocoacontrols.com/controls/qrcodereader
How to use
Paste "M1, M2" methods in your view controller (i.e. "ViewController.m")
"M1" viewDidLoad
And here the delegate methods: "M2" QRCodeReaderDelegate
Thanks.