ios - 在UIWebView中拦截图像中的链接

标签 ios objective-c cocoa-touch uiwebview

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

这是我用来获取图像源 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 将在图像在我单独的 View Controller 中打开时加载该链接。我想做的是,阻止 webview 打开链接(仅图像中的链接)(如果存在)。有什么指示可以告诉我如何实现这一目标吗?

最佳答案

终于弄清楚了,答案就在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;
    }
}

关于ios - 在UIWebView中拦截图像中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14919226/

相关文章:

iphone - 编码 C 风格的整数数组

ios - 如何判断给定文件是否可以通过照片框架添加到照片库?

iOS 7 UITextView 链接检测在 UITableView 中崩溃

objective-c - 使用 open() 保证文件权限与使用 NSData 文件写入方法写入的文件的权限相同

ios - UITableView reloadData 什么都不做(UITableView 不是 nil)

iPhone 接口(interface)尺寸

objective-c - iOS Objective-C - JSON 字符串到 NSDictionary 异常

ios - 仅当 tableview 为空时,才会在 viewDidLoad 中/之后请求 numberOfSectionsInTableView

ios - OpenGL ES 2.0 绘制不显示任何内容的简单三角形

ios - 将 UILabel 子类从 Objective-C 转换为 Swift