在 UITabBarController 中子类化 QLPreviewController 不显示 PDF 的编辑选项

问题描述

我正在尝试将 QLPreviewController 作为 Tabview 控制器中的选项卡之一。它能够正确显示 PDF 但未显示 penkit/Markup 原因:我想展示 Pencilkit 在 PDF 上绘制并保存它(来自本地或网络的其他类型的文件也因此是 QL),还从 PDF(其他)中捕获亮点

Xcode 12.3 斯威夫特 5 iOS/iPAD:14

问题: Q1) 在 PDF 文件停止时无法查看标记或编辑按钮。尝试隐藏标签栏和子视图始终为零。任何帮助表示赞赏。

Q2) 是否可以覆盖 menuItem 中的突出显示扇区/功能(在 PDF 上我看到不错的选项,所以想使用它但想保存文本选择)?

 class QLPreviewController2: QLPreviewController {
    var toolbars: [UIView] = []
    var observations : [NSkeyvalueObservation] = []
   override func viewDidLoad() {
       super.viewDidLoad()
    delegate = self
   }
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
    }
    override func viewDidLayoutSubviews() {
        super.viewDidLayoutSubviews()
    }
}

extension QLPreviewController2: QLPreviewControllerDelegate {
    
      func previewController(_ controller: QLPreviewController,editingModeFor previewItem: QLPreviewItem) -> QLPreviewItemEditingMode {
        return .updateContents
      }
        func previewController(_ controller: QLPreviewController,shouldOpen url: URL,for item: QLPreviewItem) -> Bool {
            return true
        }
      func previewController(_ controller: QLPreviewController,didUpdateContentsOf previewItem: QLPreviewItem) {
      }
   
    func previewController(_: QLPreviewController,didSaveEditedcopyOf: QLPreviewItem,at: URL) {
    }
}

我的 TabVC 是

class TabVC: UITabBarController,UITabBarControllerDelegate  {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)
        guard let viewcontollers = viewControllers else {
            return
        }
        let item1 = QLPreviewController2()
        item1.dataSource = self
//        self.navigationItem.rightBarButtonItems?.append(item1.editButtonItem) //did not work
        item1.isEditing = true //did not work
        item1.setEditing(true,animated: true)//did not work
            let icon1 = UITabBarItem(title: "Title",image: UIImage(named: "doc"),selectedImage: UIImage(named: "doc"))
            item1.tabBarItem = icon1
        self.viewControllers!.append(item1)
//        navigationItem.leftBarButtonItems?.append(item1.editButtonItem) //did not work
        }

        //Delegate methods
        func tabBarController(_ tabBarController: UITabBarController,shouldSelect viewController: UIViewController) -> Bool {
            print("Should select viewController: \(viewController.title ?? "") ?")
            return true;
        }
    
}

extension TabVC: QLPreviewControllerDataSource {
    func numberOfPreviewItems(in: QLPreviewController) -> Int {
        return 1
    }
    func previewController(_ controller: QLPreviewController,previewItemAt index: Int) -> QLPreviewItem {
        print("2")
        let fileUrl = Bundle.main.url(forResource: "some",withExtension: ".pdf",subdirectory: nil,localization: nil)
        let filePreview = PreviewItem2()
        filePreview.previewItemURL = fileUrl
        return filePreview
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)