#import "ViewController.h"
#import <SafariServices/SafariServices.h>
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
UIImageView *iamgeView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
iamgeView.userInteractionEnabled = YES;
iamgeView.image = [UIImage imageNamed:@"001"];
iamgeView.center = self.view.center;
[self.view addSubview:iamgeView];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(dealLongPress:)];
longPress.minimumPressDuration = 0.2;
[iamgeView addGestureRecognizer:longPress];
}
#pragma mark-长按识别二维码
-(void)dealLongPress:(UIGestureRecognizer*)gesture
{
UIImageView *iamgeView = (UIImageView *)gesture.view;
[self imageShiBie:iamgeView.image];
}
-(void)imageShiBie:(UIImage *)image
{
// 0.创建上下文
CIContext *context = [[CIContext alloc] init];
// 1.创建一个探测器
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:context options:@{CIDetectorAccuracy: CIDetectorAccuracyLow}];
// 2.直接开始识别图片,获取图片特征
CIImage *imageCI = [[CIImage alloc] initWithImage:image];
NSArray *features = [detector featuresInImage:imageCI];
CIQRCodeFeature *codef = (CIQRCodeFeature *)features.firstObject;
if (codef.messageString.length <= 0)
{
NSLog(@"未识别到内容");
return;
}
[self alertShow:codef.messageString];
}
-(void)alertShow:(NSString *)str
{
// 弹框
UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"识别图中二维码" message:nil preferredStyle:UIAlertControllerStyleAlert];
[alertC addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
NSLog(@"取消");
}]];
__weak typeof (self)weakSelf = self;
[alertC addAction:[UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
SFSafariViewController *safariVC = [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:str]];
[weakSelf presentViewController:safariVC animated:YES completion:nil];
}]];
[self presentViewController:alertC animated:YES completion:nil];
}
/*
#pragma mark - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}
*/
@end