对于这个需求,是退而求其次对的做法。第三方不能UIWebView里面调用微信直接支付。就弄了个扫码支付。生成二维码客户自己扫码。如果自己扫码可能保存到相册自己保存然后扫码比较方便。
下面有几个思路。
第一个思路:webView加载后截屏然后截取二维码那个部分,但是对于多个二维码就有问题。
第二个思路:webView加载后根据长按的位置获取图片 的imageURL,然后下载后,保存到本地。但是如果网络不好比较慢的情况下特别慢体验比较差。
第三个思路:webView加载后图片等资源已经缓存到本地,直接根据imageURL去本地取图片,速度比较快,体验比较好点。
第一步:根据长按部分获取图片url
CGPoint touchPoint = [recognizer locationInView:self.webView];
NSString *js = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
NSString *imageUrl = [self.webView stringByEvaluatingJavaScriptFromString:js];
第二步:从缓存中根据imageURL取图片 用到的是RNCachingURLProtocol 这个第三方库
NSString *fileName = [RNCachingURLProtocol cachePathForURLString:imageUrl];
RNCachedData *cache = [NSKeyedUnarchiver unarchiveObjectWithFile:fileName];
UIImage *image = [UIImage imageWithData:cache.data];
第三步:检测是不是二维码如果是保存到本地
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeQRCode context:nil options:@{}];
NSArray *features = [detector featuresInImage:[CIImage imageWithCGImage:image.CGImage]];
if (features.count >= 1) {
return YES;
} else {
return NO;
}
收工。。