进出口使用的zbar和阅读器SDK简单,如果在Xcode中陈述
.H
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
// ADD: delegate protocol
<ZBarReaderDelegate>
{
UIImageView *resultImage;
UITextView *resultText;
UILabel *text;
}
@property (nonatomic, retain) IBOutlet UIImageView *resultImage;
@property (nonatomic, retain) IBOutlet UITextView *resultText;
@property (nonatomic, retain) IBOutlet UILabel *text;
- (IBAction) scanButtonTapped;
@end
UITextView *resultText;
IBOutlet UILabel *text;
.M
#import "ViewController.h"
@interface ViewController()
@end
@implementation ViewController
@synthesize resultImage, resultText, text;
- (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 resulting data
resultText.text = symbol.data;
//Below are the IF Statements...
if ((symbol = @"3307210410801")) {
text.text = @"FarCry 2";
}
else if ((symbol = @"530917119347")) {
text.text = @"Call of Duty: Black Ops 2";
}
else if ((symbol = @"5021290053694")) {
text.text = @"Hitman Absolution";
}
else if ((symbol = @"5026555401739")) {
text.text = @"Red Dead Redemption";
}
// 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];
}
- (void) dealloc
{
self.resultImage = nil;
self.resultText = nil;
self.text = nil;
}
- (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation
{
return(YES);
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
它的工作原理,这样当resultText显示在我的模拟器为5021290053694,然后'文字'显示“Pingu”
我的问题是Pingu在下一个数字出现时不会消失,所以当50 26555401739显示“文字”应显示“死亡肖恩”。相反,它仍然是Pingu。
换句话说,它不会取消分配首先显示的任何“文本”。第一个将留在那里,直到我关闭应用程序并重新打开。
希望这很容易理解。 :)
预先感谢您。
- 尼克
编辑
感谢您的回复迅速即时得到“的ZBarSymbol没有明显@interface声明选择器“isEqualToString。” 我编辑了我的问题,以显示更多的即时通讯工作。 干杯 – 2013-04-09 16:33:47