0

我有一个 PDF 文件存储在 App 文档文件夹中。

我有一个 PDFView 作为我的 viewcontroller 视图的子视图。我可以从文件中加载 PDF 并显示它。没问题。

但是,根据 PDF 的大小,PDFView 可能需要一段时间才能加载。

我正在使用Objective-C。

这是我的代码:

- (void)loadDocument {

    _pdfView.document = [_fileFromThirdParty pdfDocument];

}

其中 _pdfView 被定义:

@property (strong, nonatomic) IBOutlet PDFView *pdfView;

当文档加载到视图中时,我想做一些事情。

因此,我们在 PDFView 中定义了 PDFDocument。检查这两个对象表明我们在页面更改时发布了通知等。但是当文档成功加载到视图中时,我找不到任何触发的东西。

我希望有一个委托方法,例如:

- (void)pdfView:(PDFView *)pdfView pdfHasLoaded:(BOOL)pdfHasLoaded {

    // Great - I can do something...!

}

我想在窗口中添加一个暗视图(以显示活动)并在 PDF 加载后将其删除。我打败了谷歌和 SO。没有什么这么明显的。

需要明确的是,我不是从服务器上的 URL 中提取的。这是从文档包中简单地加载。

任何人都有任何想法。

4

1 回答 1

2

你可以这样做:

func loadPDF() {

        showLoader()
        DispatchQueue.global(qos: .background).async {

            if let urlPDF = URL(string: "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf") {

                let document = PDFDocument(url: urlPDF)
                DispatchQueue.main.async(execute: {

                    self.pdfView.document = document
                    dismissLoader()
                })
            }
        }
    }
于 2019-08-14T11:48:41.827 回答