前言
之前在應(yīng)用中涉及到UIWebView長按識(shí)別二維碼的問題,安卓那邊在網(wǎng)上可以搜索到相關(guān)的代碼實(shí)現(xiàn),而我在網(wǎng)上也搜索了半天也沒有找到相關(guān)的代碼實(shí)現(xiàn),就花了好長時(shí)間研究這一塊。
廢話不多說,直接上代碼。
主要是在UIWebView webViewDidFinishLoad方法中加入下面下面幾行代碼:
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//給UIWebView加一個(gè)長按手勢
UILongPressGestureRecognizer *longPressed = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressed:)];
longPressed.delegate=self;
[self.webView addGestureRecognizer:longPressed];
}
接著在手勢響應(yīng)方法里面實(shí)現(xiàn)相應(yīng)的獲取圖片地址的方法,并彈出SheetView。
這里需要注意的是一定要判斷手勢的state屬性,想知道后果的同學(xué)可以注掉判斷代碼自己嘗試一下。
另外就是如果手指長按位置是非圖片的話,urlToSave是一個(gè)nil值。
//然后實(shí)現(xiàn)長按手勢的方法
- (void)longPressed:(UILongPressGestureRecognizer*)recognizer
{
if (recognizer.state != UIGestureRecognizerStateBegan) {
return;
}
CGPoint touchPoint = [recognizer locationInView:self.webView];
/*
##核心代碼 主要執(zhí)行一段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);
/*
執(zhí)行想要執(zhí)行的操作代碼
1.下載圖片
2.保存相冊
3.二維碼識(shí)別(返回的是圖片的地址,NSString類型,做過二維碼的同學(xué)識(shí)別的應(yīng)該不陌生)
[self showImageOptionsWithUrl:urlToSave];
*/
}
CSDN技術(shù)地址
之前一直都是在CSDN上寫的東西,去年剛開始寫了一篇簡書,之前寫的有點(diǎn)亂。今天用的MacDown重新寫了一遍。
非常希望和大家交流技術(shù),也希望交到更多的朋友。今后就用簡書寫了。