2013-06-19 65 views
1

在我的應用程序中,我使用的UIWebView來顯示不同的類型,如,HTML,PDF,DOC等UIWebView的上下文菜單,同時顯示PDF內容

我定製的HTML內容的上下文菜單中的文件,通過禁止調出使用手勢識別器。它適用於html內容。

但是,當顯示pdf內容時,web視圖使用來自corepdf框架的不同類,這是私有框架。所以在html內容上工作的技術都不適用於pdf內容。

UIWebView使用UIPDFPageView和相關類來長按超鏈接顯示上下文菜單。

是否有任何方法來覆蓋上下文菜單的顯示而不必處理私有框架?

回答

1

使用巧妙的技巧,您可以覆蓋底層UIWebDocumentView-canPerformAction:withSender:方法,只傳遞您希望顯示的內容。這也適用於PDF,因爲內部類在視圖層次結構中更深一些,並且您應該可以使用UIWebDocumentView。

在iOS5,6和7種子1上,UIWebDocumentView對象是UIWebView的滾動視圖的子視圖。我所做的是找到滾動視圖的子視圖,其名稱中包含@"UIWeb"前綴,並使用Objective C運行時將其動態分類到我自己的子類(我在運行時創建它 - 就像系統爲鍵 - 值觀察)並用我自己的替換實現。你甚至可以通過調用super來調用以前的實現。

這是哈克,但它似乎是安全的。蘋果公司似乎沒有推出進程外的UIWebView(使用XPC),所以iOS7也應該是安全的。

一如既往的免責聲明,this API is not documented and is subject to change at any given moment, and your app may stop functioning at any time®