2016-11-14 75 views
0

這是我的代碼。這可能聽起來像多餘的問題,但我的情況是不同的,因爲我沒有將QLPreviewController作爲子視圖添加,而是作爲控制器存在。QLPreviewController委託方法不會在iOS 10中調用,但會在iOS 10之前運行時調用。

從收存箱下載後,我提出它喜歡 -

self.pdfViewController = [[QLPreviewController alloc] init]; 
    self.pdfViewController.delegate = self; 
    self.pdfViewController.dataSource = self; 

    [self presentViewController:self.pdfViewController animated:YES completion:nil]; 

我也有QLPreviewControllerDataSource, QLPreviewControllerDelegate列爲協議。另外,如果在iOS 10.0之前運行,它就可以工作。

請幫幫我。

+0

什麼是不被調用的委託方法? –

+0

- (BOOL)previewController:(QLPreviewController *)controller shouldOpenURL:(NSURL *)url forPreviewItem:(id )項目,實際上是任何代理。 – Natasha

+0

這個應該在最新的iOS 10.2 beta中修復 –

回答

0

看起來iOS 10已經改變了QLPreviewController的顯示方式。在iOS 9上,當我通過模態顯示QLPreviewController來預覽圖像時,我看到一個很好的縮放效果,預覽的初始狀態是黑色背景,隱藏了導航和工具欄。我可以點擊圖像使其可見(將背景更改爲白色)。再次點擊切換狀態。

在iOS 10上,相同的代碼導致出現白色背景視圖並且縮放動畫不正確(它似乎從屏幕底部出現)。

我發現,實施適用於iOS 10這實際上未記錄的新的數據源的方法解決了該問題:

- (UIView* _Nullable)previewController:(QLPreviewController *)controller 
      transitionViewForPreviewItem:(id <QLPreviewItem>)item 
{ 
    return [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:MIDPhotoImageRowIndex_Image inSection:MIDPhotoSectionIndex_Image]]; 
} 

我回來的觀點是相同的觀點,即previewController:frameForPreviewItem:inSourceView:使用作爲原內容的幀的參考(即我的表格單元格中的圖像視圖)。

在編寫本文時,此代理方法的documentation只表示「無概覽可用」。

實現該方法意味着現在在iOS 10上調用previewController:frameForPreviewItem:inSourceView:。我只是希望有一種方法可以在沒有導航欄的情況下默認爲原始黑色背景。

相關問題