【问题标题】:Intercepting PDF Link Clicks using Quicklook Framework (QLPreviewController)使用 Quicklook 框架 (QLPreviewController) 拦截 PDF 链接点击
【发布时间】:2012-04-23 20:49:34
【问题描述】:

Quicklook 中是否提供 PDF 链接处理功能?

我创建了一个原型,并且 QLPreviewControllerDelegate 方法 -(BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id)item 永远不会被调用。

当我使用带有链接的 .docx 文件时,委托方法会被触发。

此外,当我使用 safari 或 UIWebView 打开 PDF 时,链接处理工作正常。

我用几个不同的 PDF 进行了测试,但链接拦截从未奏效。

我确保我的接口实现了以下协议: QLPreviewControllerDataSource, QLPreviewControllerDelegate

我还确保将具有 shouldOpenUrl 方法的类作为委托分配给我的 QlPreviewController 实例。

我猜问题不在于我的代码,因为 .docx 链接拦截工作正常。

有什么想法我可能做错了吗?

Quicklook 是否支持 PDF 链接拦截?

我还注意到,当我在 iOS 邮件中打开 PDF 时,它使用 Quicklook,而 PDf 链接在那里也不起作用。

【问题讨论】:

    标签: ios xcode quicklook qlpreviewcontroller


    【解决方案1】:

    为那些来到这里寻找相同答案的人回答我自己的问题。 Quicklook 不支持链接处理。如果您需要处理 PDF 文档中的链接,则必须使用 CATiledLayer 来呈现 PDF。

    【讨论】:

    • 我也试过了;在继续编写我自己的框架之前。您可以使用 QuickLook 做的事情非常有限。它在内部使用了一些 UIWebView-Document,因此即使进行黑客攻击,您也不会走得太远。最好使用此页面上的 PDF 库。 stackoverflow.com/questions/3801358/pdf-parsing-library-for-ios
    【解决方案2】:

    您可以通过QLPreviewControllerDelegate 检测何时单击文档中的链接

    /*
     * @abstract Invoked by the preview controller before trying to open an URL tapped in the preview.
     * @result Returns NO to prevent the preview controller from calling -[UIApplication openURL:] on url.
     * @discussion If not implemented, defaults is YES.
     */
    - (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id <QLPreviewItem>)item;
    

    返回 YES 将打开该文档,如果是外部 URL,它将自动启动 Safari。

    注意,您可能希望显示 UIAlertView 以询问用户是否要退出应用程序以打开 Safari。

    【讨论】:

      猜你喜欢
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 2011-01-09
      • 2011-02-02
      • 2011-02-13
      • 2011-08-10
      相关资源
      最近更新 更多