显示PDF内容时的UIWebView上下文菜单

时间:2013-06-19 03:38:06

标签: ios pdf uiwebview

在我的应用程序中,我使用UIWebView显示不同类型的文件,如html,pdf,doc等。

我正在通过禁用标注和使用手势识别器来自定义html内容的上下文菜单。它适用于HTML内容。

然而,当显示pdf内容时,Web视图使用来自corepdf框架的不同类,这是私有框架。因此,处理html内容的技术都不适用于pdf内容。

UIWebView使用UIPDFPageView及相关类在长按超链接时显示上下文菜单。

是否有任何方法可以覆盖上下文菜单的显示而无需处理私有框架?

1 个答案:

答案 0 :(得分:1)

通过巧妙的技巧,您可以覆盖基础UIWebDocumentView的{​​{1}}方法,只传递您想要显示的内容。这也适用于PDF,因为内部类在视图层次结构中更深,你应该可以使用UIWebDocumentView。

在iOS5,6和7种子1上,-canPerformAction:withSender:对象是UIWebDocumentView滚动视图的子视图。我所做的是找到滚动视图的子视图,其类名中包含UIWebView前缀,并使用Objective C运行时将其动态子类化到我自己的子类(我在运行时创建它 - 就像系统一样用于键值观察)并用我自己的实现替换实现。您甚至可以通过调用@"UIWeb"来调用上一个实现。

这很黑,但似乎很安全。 Apple似乎没有引入过程外的UIWebView(使用XPC),所以iOS7也应该是安全的。

与免责声明一样,super