//根据输入的字符生成二维码
- (IBAction)generateQRCodeAction:(UIButton *)sender {
/*字符转二维码
导入 libqrencode文件
引入头文件#import "QRCodeGenerator.h" 即可使用
*/
self.QRCodeImageView.image = [QRCodeGenerator qrImageForString:self.showResultLabel.text imageSize:self.QRCodeImageView.bounds.size.width];
}
//开始扫描
- (IBAction)startScanAction:(UIButton *)sender {
/*扫描二维码部分:
导入ZBarSDK文件并引入一下框架
AVFoundation.framework
CoreMedia.framework
CoreVideo.framework
QuartzCore.framework
libiconv.dylib
引入头文件#import “ZBarSDK.h” 即可使用
当找到条形码时,会执行代理方法
- (void) imagePickerController: (UIImagePickerController*) reader didFinishPickingMediaWithInfo: (NSDictionary*) info
最后读取并显示了条形码的图片和内容。*/
ZBarReaderViewController * readerVC = [ZBarReaderViewController new];//[[ZBarReaderViewController alloc] init];
readerVC.readerDelegate = self;
readerVC.supportedOrientationsMask = ZBarOrientationMaskAll;
ZBarImageScanner * scanner = readerVC.scanner;
[scanner setSymbology:ZBAR_I25 config:ZBAR_CFG_ENABLE to:0];
[self presentViewController:readerVC animated:YES completion:nil ];
}
//扫描完成
- (void) imagePickerController: (UIImagePickerController*) reader
didFinishPickingMediaWithInfo: (NSDictionary*) info
{
id<NSFastEnumeration> results =
[info objectForKey: ZBarReaderControllerResults];
ZBarSymbol *symbol = nil;
for(symbol in results)
break;
NSLog(@"info = %@", info);
//给二维码的imageView赋值
self.QRCodeImageView.image =
[info objectForKey: UIImagePickerControllerOriginalImage];
// [reader dismissModalViewControllerAnimated: YES];//被弃用
[reader dismissViewControllerAnimated:YES completion:nil];
//判断是否包含 头'http:'
NSString *regex = @"http+:[^\\s]*";
//谓语
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex];
//判断是否包含 头'ssid:'
NSString *ssid = @"ssid+:[^\\s]*";;
NSPredicate *ssidPre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",ssid];
self.showResultLabel.text = symbol.data ;
NSLog(@"symbol.data = %@", symbol.data);
if ([predicate evaluateWithObject:self.showResultLabel.text]) {//Returns a Boolean value that indicates whether a given object matches the conditions specified by the receiver.
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:nil
message:@"It will use the browser to this URL。"
delegate:nil
cancelButtonTitle:@"Close"
otherButtonTitles:@"Ok", nil];
alert.delegate = self;
alert.tag=1;//设置是那个alertView
[alert show];
}
else if([ssidPre evaluateWithObject:self.showResultLabel.text]){
NSArray *arr = [self.showResultLabel.text componentsSeparatedByString:@";"];
NSArray * arrInfoHead = [[arr objectAtIndex:0] componentsSeparatedByString:@":"];
NSArray * arrInfoFoot = [[arr objectAtIndex:1] componentsSeparatedByString:@":"];
self.showResultLabel.text=
[NSString stringWithFormat:@"ssid: %@ \n password:%@",
[arrInfoHead objectAtIndex:1],[arrInfoFoot objectAtIndex:1]];
UIAlertView * alert = [[UIAlertView alloc]initWithTitle:self.showResultLabel.text
message:@"The password is copied to the clipboard , it will be redirected to the network settings interface"
delegate:nil
cancelButtonTitle:@"Close"
otherButtonTitles:@"Ok", nil];
alert.delegate = self;
alert.tag=2;
[alert show];
UIPasteboard *pasteboard=[UIPasteboard generalPasteboard];
// 然后,可以使用如下代码来把一个字符串放置到剪贴板上:
pasteboard.string = [arrInfoFoot objectAtIndex:1];
}
}