關(guān)于UIWebView長按識(shí)別二維碼的問題

前言

之前在應(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ù),也希望交到更多的朋友。今后就用簡書寫了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容