2012-04-23 52 views
4

在Quicklook中PDF鏈接處理是否可用?我創建了一個原型,並且QLPreviewControllerDelegate方法 - (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id)item永遠不會被調用。使用Quicklook框架攔截PDF鏈接點擊(QLPreviewController)

當我使用帶有鏈接的.docx文件時,委託方法確實被觸發。

另外,當我使用safari或UIWebView打開PDF時,鏈接處理工作正常。

我用幾個不同的PDF進行了測試,並且鏈接攔截從未奏效。

我確信,我的界面實現了以下協議: QLPreviewControllerDataSource,QLPreviewControllerDelegate

我還相信,具有shouldOpenUrl方法的類被指定爲委託我QlPreviewController實例。

我猜這個問題不是我的代碼,因爲.docx鏈接截取工作正常。

關於我可能會做錯什麼想法?

即使Quicklook支持PDF鏈接截取?

我還注意到,當我在iOS郵件中打開PDF時,它使用Quicklook,並且PDf鏈接也不在那裏工作。

回答

2

回答我自己的問題,那些在此尋找相同答案的人。 Quicklook不支持鏈接處理。如果需要處理PDF文檔中的鏈接,則必須使用CATiledLayer來呈現PDF。

+0

我也嘗試過;在開始之前編寫我自己的框架。你可以用QuickLook完成的事情非常有限。它在內部使用了一些UIWebView-Document,所以即使被盜用,你也不會走得太遠。更好地使用這個頁面上的PDF庫。 http://stackoverflow.com/questions/3801358/pdf-parsing-library-for-ios – steipete 2012-07-16 13:40:46

0

當點擊一個鏈接文檔中通過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。