2

我有一个带有 PDF 文件的 WebView,其中的一个文档包含我要禁用的超链接。我尝试使用这种方法,但它不起作用,链接仍然打开并加载讨厌的 URL:

  1. 我把UIWebViewDelegate我的ViewController.h
  2. 然后我把这段代码放在我的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

只需将UIWebView'dataDetectorTypes属性设置为None

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

基于所有来回的评论!!!

所以现在你需要做的不是简单地在你的

shouldStartLoadWithRequest 

方法,如果正在加载的 URL 来自本地,则需要回答“是”,如果来自其他任何地方,则需要回答“否”。使用

[request.URL isFileReferenceURL] 

方法来检查它是否是本地文件。注意:此方法显然仅适用于 iOS 5 及更高版本,请查看

检查 NSURL 是否为本地文件

希望这对你有用:-)

于 2012-06-04T22:03:57.517 回答
0

如果 trumpetlicks 说 PDF 查看器会忽略您从 shouldStartLoadWithRequest 中说的话,并且如果您不想禁用所有链接(设置数据检测器会这样做)。

然后您可以尝试的其他方法是创建一个派生自 NSURLProtocol 的类并将其注册到您的应用程序委托中。这将能够拦截源自 pdf 的网络流量,并让您有机会过滤链接并阻止您不想出去的链接。

于 2012-06-05T00:45:10.547 回答