4

UIWebView に表示される URL からハイパーリンクを削除する必要があり、この質問を見てきました: UIWebView に表示される URL からハイパーリンクを削除します

私はこの方法を使用する必要があることを知っています:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType

しかし、私はまだいくつかの問題を抱えているようです。

まず、特定のリンク (www.google.com など) のみを回避するにはどうすればよいですか。

次に、UIWebView 内のすべてのリンクを回避するにはどうすればよいですか?

私のコードは次のようになります。

[webUI loadHTMLString:[strDescription stringByDecodingHTMLEntities] baseURL:nil];
webUI.dataDetectorTypes = UIDataDetectorTypeNone;

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"finish loading");

    [webUI stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\".active\", \"pointer-events: none;\");document.styleSheets[0].addRule(\".active\", \"cursor: default;\")"];

}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
       return YES;
}

いくつかのガイダンスが必要です。ありがとう..

HTML 文字列は次のようになります。

> <div style="font-family: Helvetica"><div style="color: #FFFFFF;"><div
> style="font-family: Helvetica;"><p><span style="font-size:
> 24px;"><strong>Optimal Performance Always</strong></span><span
> style="font-size: 18px;"><br /></span></p><p><span style="font-size:
> 18px;">The standard servicing package<a
> href="http://www.google.com">www.google.com</a></div>
4

1 に答える 1

3

最初のページがロードされた後にすべてのリンクを無効にする場合は、ページがロードされた場合に保存するプロパティを追加し、webView:shouldStartLoadWithRequest でその値を使用できます。

@property(nonatomic) BOOL pageLoaded; // initially NO

- (void)webViewDidFinishLoad:(UIWebView *)webView {
    NSLog(@"finish loading");

    [webUI stringByEvaluatingJavaScriptFromString:@"document.styleSheets[0].addRule(\".active\", \"pointer-events: none;\");document.styleSheets[0].addRule(\".active\", \"cursor: default;\")"];

    // after all your stuff
    self.pageLoaded = YES;
}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
   return ! self.pageLoaded;
}

これはリンクを非表示にするのではなく、webview がリンクを読み込まないようにするだけであることに注意してください。

また、webView:shouldStartLoadWithRequest:navigationType: で request.URL を確認して、特定のページのみを読み込むこともできます。別の方法は、navigationType 値を確認することです。

enum {
   UIWebViewNavigationTypeLinkClicked,
   UIWebViewNavigationTypeFormSubmitted,
   UIWebViewNavigationTypeBackForward,
   UIWebViewNavigationTypeReload,
   UIWebViewNavigationTypeFormResubmitted,
   UIWebViewNavigationTypeOther
};
于 2013-03-04T03:51:01.057 に答える