更新后,我试图为一个pageOverlayViewProvider设置一个PDFView,但它不像预期的那样工作。没有调用PDFPageOverlayViewProvider方法,PDFViewDelegate方法运行良好。
struct ReaderView: UIViewRepresentable {
public typealias UIViewType = PDFView
let url: URL
let document: PDFDocument
init(_ url: URL) {
self.url = url
self.document = PDFDocument(url: self.url)!
}
func makeCoordinator() -> Coordinator {
Coordinator()
}
func makeUIView(context: Context) -> PDFView {
let pdfView = PDFView()
pdfView.document = document
pdfView.displayMode = .singlePageContinuous
pdfView.displayDirection = .vertical
pdfView.autoScales = true
pdfView.delegate = context.coordinator
pdfView.pageOverlayViewProvider = context.coordinator
pdfView.usePageViewController(true)
pdfView.backgroundColor = .clear
document.delegate = context.coordinator
return pdfView
}
func updateUIView(_ uiView: PDFView, context: Context) {
}
}extension ReaderView {
class Coordinator: NSObject, PDFPageOverlayViewProvider, PDFViewDelegate, PDFDocumentDelegate {
func pdfView(_ view: PDFView, overlayViewFor page: PDFPage) -> UIView? {
return UIView(frame: .zero)
}
func pdfView(_ pdfView: PDFView, willDisplayOverlayView overlayView: UIView, for page: PDFPage) {
}
func pdfView(_ pdfView: PDFView, willEndDisplayingOverlayView overlayView: UIView, for page: PDFPage) {
}
func pdfViewWillClick(onLink sender: PDFView, with url: URL) {
}
func didMatchString(_ instance: PDFSelection) {
}
}发布于 2022-11-07 19:01:18
要使pageOverlayViewProvider与PDFView一起工作,似乎必须在将PDF文档与PDFView关联之前设置该实例属性。
在使用UIViewRepresentable时,当使用makeUIView函数生成PDFView时,以下内容应该可以工作:
func makeUIView(context: Context) -> PDFView {
let pdfView = PDFView()
pdfView.displayMode = .singlePageContinuous
pdfView.displayDirection = .vertical
pdfView.autoScales = true
pdfView.delegate = context.coordinator
pdfView.pageOverlayViewProvider = context.coordinator
pdfView.usePageViewController(true)
pdfView.backgroundColor = .clear
pdfView.document = document
document.delegate = context.coordinator
return pdfView
}https://stackoverflow.com/questions/74281656
复制相似问题