在我的应用程序中,我有一个 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/