Zxing used in Android for this purpose and in iPhone use ZBarSDK
Custom ZBarSDK
1. Make a UIView object (called scanView) design it as u want to customize.
2. make sure that where you want camera region to scan code need to be transparent.
3. Make object of ZBarReaderViewController (called reader)
3. set reader.cameraOverlayView to this view. (reader.cameraOverlayView = scanView;)
4. If need Orientation specfic use
reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);
Detail Code :>
Whole Code
// Name : AddCardViewController.h
#import <UIKit/UIKit.h>
#import "ZBarSDK.h"
@interface AddCardViewController : UIViewController<ZBarReaderDelegate, UITextFieldDelegate, UIScrollViewDelegate>
{
ZBarReaderViewController *reader;
}
@property (nonatomic, strong) IBOutlet UIView *scanView;
@property (nonatomic, strong) IBOutlet UIImageView *resultImage;
@property (nonatomic, strong) IBOutlet UITextField *resultText;
@property (nonatomic, strong) IBOutlet UIButton *wontScanButton;
@property (nonatomic, strong) NSString *cardType;
@property (nonatomic, strong) IBOutlet UIToolbar *toolBarScanPage;
- (void) readBarCode;
- (void) showSaveButton;
- (IBAction)btnSavePressed:(id)sender;
- (IBAction)scanBackBarButtonPressed:(id)sender;
- (IBAction)wontScanBtnPressed:(id)sender;
- (IBAction)enterBarCodeManually:(id)sender;
- (IBAction)enterBarCodeManuallyViaModelView:(id)sender;
@end
----------------------
// Name : AddCardViewController.m
#import "AddCardViewController.h"
#import "NewRewardCardViewController.h"
@implementation AddCardViewController
@synthesize resultImage,resultText,cardType;
@synthesize scanView;
@synthesize wontScanButton;
@synthesize toolBarScanPage;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//self.resultText.text = @"";
// Navigation bar right side save
if (![Validate isNull:cardType]) {
[self showSaveButton];
}
}
- (void)viewDidLoad{
[super viewDidLoad];
[dicGlobal setObject:self.navigationController forKey:@"navCont"];
self.navigationItem.leftBarButtonItem= [CommonFunctions getBackBtn];
self.navigationController.navigationBarHidden = NO;
self.title=@"Scan Card";
//[toolBarScanPage drawRect:CGRectMake(0, 0, 320, 40)];
[self readBarCode];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - IBAction Methods
- (IBAction)btnSavePressed:(id)sender{
if (![Validate isNull:cardType]) {
if ([cardType isEqualToString:@"QR-Code"]){
// QR - Code for stamp cards
[CommonFunctions AlertTitle:@"QR_CODE" withMsg:@"Stamp Card"];
}
else{
//Bar code for reward cards (cardType == EAN-13)
NewRewardCardViewController *nrcvc= [NewRewardCardViewController new];
nrcvc.barCodeValue = resultText.text;
nrcvc.barCodeImageDataValue = [[NSData alloc] initWithData:UIImageJPEGRepresentation(resultImage.image, 90)];
[nrcvc isBarCodeImageAvailable:YES];
[self.navigationController pushViewController:nrcvc animated:YES];
}
}
}
-(IBAction)scanBackBarButtonPressed:(id)sender{
if ([Validate isNull:cardType]) {
[self.navigationController dismissModalViewControllerAnimated:NO];
[self.navigationController popViewControllerAnimated:YES];
}
else{
[self.navigationController dismissModalViewControllerAnimated:NO];
}
}
- (IBAction)wontScanBtnPressed:(id)sender{
[self readBarCode];
}
- (IBAction)enterBarCodeManually:(id)sender{
NewRewardCardViewController *nrcvc= [NewRewardCardViewController new];
[nrcvc isBarCodeImageAvailable:NO];
[self.navigationController pushViewController:nrcvc animated:YES];
}
- (IBAction)enterBarCodeManuallyViaModelView:(id)sender{
[reader dismissModalViewControllerAnimated:NO];
NewRewardCardViewController *nrcvc= [NewRewardCardViewController new];
[nrcvc isBarCodeImageAvailable:NO];
[self.navigationController pushViewController:nrcvc animated:YES];
}
#pragma mark - Util Methods
- (void) showSaveButton{
// save button on navigation bar right side
UIButton *btnNext=[UIButton buttonWithType:UIButtonTypeCustom];
[btnNext setFrame:CGRectMake(280, 0, 64, 32)];
[btnNext setImage:[UIImage imageNamed:@"SaveBtn_17"] forState:UIControlStateNormal];
[btnNext addTarget:self action:@selector(btnSavePressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *btnRight=[[UIBarButtonItem alloc] initWithCustomView:btnNext];
self.navigationItem.rightBarButtonItem=btnRight;
}
- (void) readBarCode{
reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);
#if !(TARGET_IPHONE_SIMULATOR)
reader.cameraOverlayView = scanView;
reader.showsZBarControls = NO;
#endif
//[[UIApplication sharedApplication] setStatusBarHidden:NO];
reader.wantsFullScreenLayout = NO;
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology:ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];
[NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(presentModal) userInfo:nil repeats:NO];
}
-(void) presentModal
{
[self presentModalViewController:reader animated:NO];
}
#pragma mark - ZBarReaderDelegate
- (void) imagePickerController:(UIImagePickerController*)reader1 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;
//resultText.hidden = NO;
NSLog(@"%@",resultText.text);
cardType = symbol.typeName;
// EXAMPLE: do something useful with the barcode image
resultImage.image =[info objectForKey: UIImagePickerControllerOriginalImage];
[self showSaveButton];
// ADD: dismiss the controller (NB dismiss from the *reader*!)
[reader1 dismissModalViewControllerAnimated:NO];
//[self.navigationController popViewControllerAnimated:NO];
}
@end
Custom ZBarSDK
1. Make a UIView object (called scanView) design it as u want to customize.
2. make sure that where you want camera region to scan code need to be transparent.
3. Make object of ZBarReaderViewController (called reader)
3. set reader.cameraOverlayView to this view. (reader.cameraOverlayView = scanView;)
4. If need Orientation specfic use
reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);
Detail Code :>
Whole Code
// Name : AddCardViewController.h
#import <UIKit/UIKit.h>
#import "ZBarSDK.h"
@interface AddCardViewController : UIViewController<ZBarReaderDelegate, UITextFieldDelegate, UIScrollViewDelegate>
{
ZBarReaderViewController *reader;
}
@property (nonatomic, strong) IBOutlet UIView *scanView;
@property (nonatomic, strong) IBOutlet UIImageView *resultImage;
@property (nonatomic, strong) IBOutlet UITextField *resultText;
@property (nonatomic, strong) IBOutlet UIButton *wontScanButton;
@property (nonatomic, strong) NSString *cardType;
@property (nonatomic, strong) IBOutlet UIToolbar *toolBarScanPage;
- (void) readBarCode;
- (void) showSaveButton;
- (IBAction)btnSavePressed:(id)sender;
- (IBAction)scanBackBarButtonPressed:(id)sender;
- (IBAction)wontScanBtnPressed:(id)sender;
- (IBAction)enterBarCodeManually:(id)sender;
- (IBAction)enterBarCodeManuallyViaModelView:(id)sender;
@end
----------------------
// Name : AddCardViewController.m
#import "AddCardViewController.h"
#import "NewRewardCardViewController.h"
@implementation AddCardViewController
@synthesize resultImage,resultText,cardType;
@synthesize scanView;
@synthesize wontScanButton;
@synthesize toolBarScanPage;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)didReceiveMemoryWarning{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
//self.resultText.text = @"";
// Navigation bar right side save
if (![Validate isNull:cardType]) {
[self showSaveButton];
}
}
- (void)viewDidLoad{
[super viewDidLoad];
[dicGlobal setObject:self.navigationController forKey:@"navCont"];
self.navigationItem.leftBarButtonItem= [CommonFunctions getBackBtn];
self.navigationController.navigationBarHidden = NO;
self.title=@"Scan Card";
//[toolBarScanPage drawRect:CGRectMake(0, 0, 320, 40)];
[self readBarCode];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - IBAction Methods
- (IBAction)btnSavePressed:(id)sender{
if (![Validate isNull:cardType]) {
if ([cardType isEqualToString:@"QR-Code"]){
// QR - Code for stamp cards
[CommonFunctions AlertTitle:@"QR_CODE" withMsg:@"Stamp Card"];
}
else{
//Bar code for reward cards (cardType == EAN-13)
NewRewardCardViewController *nrcvc= [NewRewardCardViewController new];
nrcvc.barCodeValue = resultText.text;
nrcvc.barCodeImageDataValue = [[NSData alloc] initWithData:UIImageJPEGRepresentation(resultImage.image, 90)];
[nrcvc isBarCodeImageAvailable:YES];
[self.navigationController pushViewController:nrcvc animated:YES];
}
}
}
-(IBAction)scanBackBarButtonPressed:(id)sender{
if ([Validate isNull:cardType]) {
[self.navigationController dismissModalViewControllerAnimated:NO];
[self.navigationController popViewControllerAnimated:YES];
}
else{
[self.navigationController dismissModalViewControllerAnimated:NO];
}
}
- (IBAction)wontScanBtnPressed:(id)sender{
[self readBarCode];
}
- (IBAction)enterBarCodeManually:(id)sender{
NewRewardCardViewController *nrcvc= [NewRewardCardViewController new];
[nrcvc isBarCodeImageAvailable:NO];
[self.navigationController pushViewController:nrcvc animated:YES];
}
- (IBAction)enterBarCodeManuallyViaModelView:(id)sender{
[reader dismissModalViewControllerAnimated:NO];
NewRewardCardViewController *nrcvc= [NewRewardCardViewController new];
[nrcvc isBarCodeImageAvailable:NO];
[self.navigationController pushViewController:nrcvc animated:YES];
}
#pragma mark - Util Methods
- (void) showSaveButton{
// save button on navigation bar right side
UIButton *btnNext=[UIButton buttonWithType:UIButtonTypeCustom];
[btnNext setFrame:CGRectMake(280, 0, 64, 32)];
[btnNext setImage:[UIImage imageNamed:@"SaveBtn_17"] forState:UIControlStateNormal];
[btnNext addTarget:self action:@selector(btnSavePressed:) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *btnRight=[[UIBarButtonItem alloc] initWithCustomView:btnNext];
self.navigationItem.rightBarButtonItem=btnRight;
}
- (void) readBarCode{
reader = [ZBarReaderViewController new];
reader.readerDelegate = self;
reader.supportedOrientationsMask = ZBarOrientationMask(UIInterfaceOrientationPortrait);
#if !(TARGET_IPHONE_SIMULATOR)
reader.cameraOverlayView = scanView;
reader.showsZBarControls = NO;
#endif
//[[UIApplication sharedApplication] setStatusBarHidden:NO];
reader.wantsFullScreenLayout = NO;
ZBarImageScanner *scanner = reader.scanner;
[scanner setSymbology:ZBAR_I25 config: ZBAR_CFG_ENABLE to: 0];
[NSTimer scheduledTimerWithTimeInterval:0.2f target:self selector:@selector(presentModal) userInfo:nil repeats:NO];
}
-(void) presentModal
{
[self presentModalViewController:reader animated:NO];
}
#pragma mark - ZBarReaderDelegate
- (void) imagePickerController:(UIImagePickerController*)reader1 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;
//resultText.hidden = NO;
NSLog(@"%@",resultText.text);
cardType = symbol.typeName;
// EXAMPLE: do something useful with the barcode image
resultImage.image =[info objectForKey: UIImagePickerControllerOriginalImage];
[self showSaveButton];
// ADD: dismiss the controller (NB dismiss from the *reader*!)
[reader1 dismissModalViewControllerAnimated:NO];
//[self.navigationController popViewControllerAnimated:NO];
}
@end
No comments:
Post a Comment