前言
之前在应用中涉及到UIWebView长按识别二维码的问题,安卓那边在网上可以搜索到相关的代码实现,而我在网上也搜索了半天也没有找到相关的代码实现,就花了好长时间研究这一块。
废话不多说,直接上代码。
主要是在UIWebView webViewDidFinishLoad方法中加入下面下面几行代码:
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//给UIWebView加一个长按手势
UILongPressGestureRecognizer *longPressed = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
longPressed.delegate=self;
[self.webView addGestureRecognizer:longPressed];
}
接着在手势响应方法里面实现相应的获取图片地址的方法,并弹出SheetView。
这里需要注意的是一定要判断手势的state属性,想知道后果的同学可以注掉判断代码自己尝试一下。
另外就是如果手指长按位置是非图片的话,urlToSave是一个nil值。
//然后实现长按手势的方法
- (void)longPressed:(UILongPressGestureRecognizer*)recognizer
{
if (recognizer.state != UIGestureRecognizerStateBegan) {
return;
}
CGPoint touchPoint = [recognizer locationInView:self.webView];
/*
##核心代码 主要执行一段js语句
*/
NSString *imgURL = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
NSString *urlToSave = [self.webView stringByEvaluatingJavaScriptFromString:imgURL];
if (urlToSave.length == 0) {
return;
}
MyLog(@"%@",urlToSave);
/*
执行想要执行的操作代码
1.下载图片
2.保存相册
3.二维码识别(返回的是图片的地址,NSString类型,做过二维码的同学识别的应该不陌生)
[self showImageOptionsWithUrl:urlToSave];
*/
}
CSDN技术地址
之前一直都是在CSDN上写的东西,去年刚开始写了一篇简书,之前写的有点乱。今天用的MacDown重新写了一遍。
非常希望和大家交流技术,也希望交到更多的朋友。今后就用简书写了。
网友评论