在UIWebView中禁用PDF文件中的超链接

时间:2012-06-04 20:33:38

标签: iphone objective-c ios pdf uiwebview

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

  
      
  1. 我将UIWebViewDelegate放入ViewController.h
  2.   
  3. 然后我将此代码放入ViewController.m
  4.   
- (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;
    }
}

上面的代码对我也没有任何帮助

3 个答案:

答案 0 :(得分:3)

只需将UIWebView的{​​{1}}媒体资源设为

dataDetectorTypes

答案 1 :(得分:1)

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

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

中返回NO
shouldStartLoadWithRequest 

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

[request.URL isFileReferenceURL] 

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

Check if NSURL is Local File

希望这能为你做到: - )

答案 2 :(得分:0)

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

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