3

我尝试使用 QuickLook 框架。

为了编辑 PDF,我在 Coordinator 中实现了“previewController(_: editingModeFor: )”。

在 Xcode(ver 11.6) 模拟器中,quicklook 视图有铅笔标记工具。 在 Xcode 模拟器中

但在我的 iPad(PadOS 13.6) 中,没有标记工具。 在我的 iPad 设备中,PadOS 13.6

QuickLook 框架中是否有任何错误?

这是我的代码。

PreviewController.swift

import SwiftUI
import QuickLook
struct PreviewController: UIViewControllerRepresentable {
    let url: URL
    @Binding var isPresented: Bool
    func makeUIViewController(context: Context) -> UINavigationController {
        let controller = QLPreviewController()
        controller.dataSource = context.coordinator
        controller.delegate = context.coordinator
        let navigationController = UINavigationController(rootViewController: controller)
        return navigationController
    }
    func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {}
    func makeCoordinator() -> Coordinator {
        return Coordinator(parent: self)
    }
    class Coordinator: NSObject, QLPreviewControllerDelegate, QLPreviewControllerDataSource {
        let parent: PreviewController
        init(parent: PreviewController) {
            self.parent = parent
        }
        func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
            return 1
    }
    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
    return parent.url as NSURL
    }
    /* 
Return .updateContents so QLPreviewController takes care of updating the contents of the provided QLPreviewItems whenever users save changes.
*/    
    func previewController(_ controller: QLPreviewController, editingModeFor previewItem: QLPreviewItem) -> QLPreviewItemEditingMode {
    return .updateContents
        }
    }
}

内容视图.swift

import SwiftUI
struct ContentView: View {
    let fileUrl = Bundle.main.url(forResource: "LoremIpsum", withExtension: "pdf")!
    @State private var showingPreview = false
    var body: some View {
        Button("Preview File") {
            self.showingPreview = true
        }
        .sheet(isPresented: $showingPreview) {
            PreviewController(url: self.fileUrl, isPresented: self.$showingPreview)
        }
    }
}
4

0 回答 0