#import "ViewController.h"
#import "ZBarSDK/Headers/ZBarSDK/ZBarSDK.h"
@interface ViewController ()<ZBarReaderDelegate>
@property (weak, nonatomic) IBOutlet UILabel *showLabel;
@property (weak, nonatomic) IBOutlet UIImageView *showImgView;
- (IBAction)scanQRImage:(id)sender;
@end
@implementation ViewController
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? // Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)scanQRImage:(id)sender {
? ? // 實(shí)例化掃描控制器
? ? ZBarReaderViewController *readVC = [[ZBarReaderViewController alloc] init];
? ? // 設(shè)置代理
? ? readVC.readerDelegate=self;
? ? // 獲取控制器中的掃描器對象
? ? ZBarImageScanner*scanner = readVC.scanner;
? ? // 設(shè)置掃描器識(shí)別的圖片類型
? ? [scannersetSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
? ? // 跳轉(zhuǎn)至掃描控制器
? ? [self presentViewController:readVC animated:YES completion:nil];
}
#pragma mark ---- ZBarReaderDelegate -----
// 獲取到多媒體信息(圖片岳链、二維碼、視頻)后回調(diào)的方法
- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionaryid> *)info {
? ? // 隱藏當(dāng)前的掃描控制器視圖
? ? [pickerdismissViewControllerAnimated:YES completion:nil];
? ? /*
?? ? 獲取掃描到的圖片數(shù)據(jù)
?? ? */
? ? // 獲取掃描到的圖片數(shù)據(jù)
? ? UIImage*img =? [infoobjectForKey:UIImagePickerControllerOriginalImage];
? ? // 將圖片顯示在圖像視圖上
? ? self.showImgView.image= img;
? ? /*
?? ? 獲取掃描得到的二維碼圖片信息
?? ? */
? ? // 得到掃描到的圖片信息數(shù)據(jù)枚舉
? ? id<NSFastEnumeration> results = [info objectForKey:ZBarReaderControllerResults];
? ? // 獲取集合中的信息
? ? ZBarSymbol*symbol =nil;
? ? for(symbolinresults) {
? ? ? ? break;
? ? }
? ? if(symbol ==nil) {
? ? ? ? NSLog(@"掃描失敗");
? ? ? ? return;
? ? }
? ? // 如果不為空概荷,獲取掃描到的結(jié)果
? ? NSString*resStr = symbol.data;
? ? // 把數(shù)據(jù)展示在lable上
? ? self.showLabel.text= resStr;
? ? // 判斷是否是一個(gè)網(wǎng)址字符串怔接,是的話做app跳轉(zhuǎn)
? ? if([symbol.datahasPrefix:@"http://"] || [symbol.datahasPrefix:@"https://"]) {
? ? ? ? //
? ? ? ? NSURL*url = [NSURLURLWithString:symbol.data];
? ? ? ? [[UIApplication sharedApplication] openURL:url options:nil completionHandler:nil];
? ? }
}