在 UIWebView 中截取图片中的链接

Posted

技术标签:

【中文标题】在 UIWebView 中截取图片中的链接【英文标题】:Intercepting links in images in UIWebView 【发布时间】:2013-02-17 08:18:24 【问题描述】:

在我的应用程序中,我有一个 webview,并且想在单独的视图控制器中打开加载在网页中的图像,这很好,我需要做的就是获取图像源的 URL 并将其加载一个不同的视图控制器,我可以做到。

这是我用来获取图像源 URL 的代码。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
    if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) 
        CGPoint touchPoint = [touch locationInView:self.view];

        NSString *imageSRC = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
        NSString *srcOfImage = [webView stringByEvaluatingjavascriptFromString:imageSRC];
        NSLog(@"src:%@",srcOfImage);
    
    return YES;

现在,我的问题是,有时,当图像可能带有链接(即标签)时,webview 将在图像在我单独的视图控制器中打开时加载链接。我想做的是,如果存在链接,请阻止 webview 打开链接(仅图像中的链接)。有什么指示我可以如何实现这一点吗?

【问题讨论】:

【参考方案1】:

终于想通了,答案就在UIWebViewDelegate。对于任何感兴趣的人,这就是我解决它的方法..

bool isImage;

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
    if ([gestureRecognizer isKindOfClass:[UITapGestureRecognizer class]]) 
        CGPoint touchPoint = [touch locationInView:self.view];

        NSString *imageSRC = [NSString stringWithFormat:@"document.elementFromPoint(%f, %f).src", touchPoint.x, touchPoint.y];
        NSString *srcOfImage = [webView stringByEvaluatingJavaScriptFromString:imageSRC];
        NSLog(@"src:%@",srcOfImage);
        NSURL *imgsrcURL = [NSURL URLWithString:srcOfImage];
        if (imgsrcURL && imgsrcURL.scheme && imgsrcURL.host) 
            isImage = TRUE;
        
    
    return YES;


- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
    if ((navigationType == UIWebViewNavigationTypeLinkClicked) && (isImage)) 
        return NO;
        isImage = FALSE;
     else 
        return YES;
    

【讨论】:

以上是关于在 UIWebView 中截取图片中的链接的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIWebView+AFNetworking 时链接如下

UIWebView 和 URLRequest 拦截

摆脱 iOs UIWebView 中的链接单击“flash”指示器

UIWebView 打开新tab

web 网页截取图片

UiWebView 全屏显示