2

私のアプリでは、ウェブビューがあり、ウェブページに読み込まれた画像を別のビューコントローラーで開きたいと思っていました。これで問題ありません。必要なのは、画像のソースへの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;
}

さて、私の質問は、画像にリンク(つまりタグ)が含まれている可能性がある場合、画像が別のView Controllerで開いているときに、Webビューがリンクをロードすることです。私がしたいのは、リンクが存在する場合は、Webビューがリンク(画像内のリンクのみ)を開かないようにすることです。それを達成するために私がどのように取り組むことができるかについての指針はありますか?

4

1 に答える 1

3

最終的にそれを理解し、答えは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;
    }
}
于 2013-02-17T09:33:19.127 に答える