2

PDF ファイルを含む WebView があり、その中のドキュメントに無効にしたいハイパーリンクが含まれています。このアプローチを使用してみましたが、うまくいきませんでした。リンクがまだ開いていて、厄介な URL をロードしています。

  1. UIWebViewDelegateは私のViewController.h
  2. 次に、このコードを my に入れますViewController.m:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if (webView == myReadingArticlesWebView) {
        return NO;
    }
    else {
        return YES;
    }
}

これをシンプルで使いやすくする方法はありますか?上記のプロセスで間違いを犯す可能性があることを認めます。

編集:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
    if ([request.URL isFileReferenceURL]) {
        return YES;
    } else {
        return NO;
    }
}

上記のコードは私にとっても何もしません

4

3 に答える 3

3

UIWebViewdataDetectorTypesプロパティをNoneに設定するだけです:

[myReadingArticlesWebView setDataDetectorTypes:UIDataDetectorTypeNone];
于 2012-06-04T20:48:01.920 に答える
1

前後のすべてのコメントに基づいて!!!

だから今、あなたがする必要があるのは、単に NO を返すのではなく、

shouldStartLoadWithRequest 

ロードされている URL がローカルからのものである場合は YES と答える必要があり、それ以外の場所からのものである場合は NO と答える必要があります。使用

[request.URL isFileReferenceURL] 

ローカルファイルかどうかを確認するメソッド。注: この方法は明らかに iOS 5 以降でのみ機能します。

NSURL がローカル ファイルかどうかを確認する

うまくいけば、これでうまくいきます:-)

于 2012-06-04T22:03:57.517 に答える
0

トランペットリックが言うように、PDF ビューアが shouldStartLoadWithRequest からの発言を無視する場合、およびすべてのリンクを無効にしたくない場合 (データ検出器が行う設定)。

次に、NSURLProtocol から派生したクラスを作成し、それをアプリ デリゲートに登録することもできます。これにより、pdf から発信されたネットワーク トラフィックを傍受し、リンクをフィルター処理して、送信したくないリンクを停止することができます。

于 2012-06-05T00:45:10.547 に答える