Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 截取UIWebView中图像中的链接_Ios_Objective C_Cocoa Touch_Uiwebview - Fatal编程技术网

Ios 截取UIWebView中图像中的链接

Ios 截取UIWebView中图像中的链接,ios,objective-c,cocoa-touch,uiwebview,Ios,Objective C,Cocoa Touch,Uiwebview,在我的应用程序中,我有一个webview,我想在一个单独的视图控制器中打开加载在网页中的图像,这很好,我所需要做的就是获取图像源的URL并将其加载到另一个视图控制器中,我可以这样做 下面是我用来获取图像源URL的代码 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { if ([gestureRecognizer isKindOfCl

在我的应用程序中,我有一个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打开链接(仅限于图像中的链接)。有没有关于我如何实现这一目标的建议?

最终找到了答案,答案就在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;
    }
}