【问题标题】:UIDocumentPickerViewController is not working when testing with my iPad but fine with simulatorsUIDocumentPickerViewController 在我的 iPad 上测试时不起作用,但在模拟器上很好
【发布时间】:2021-01-09 02:16:55
【问题描述】:

我正在创建一个应用程序来显示由UIDocumentPickerViewController 为 iPad 选择的 PDF 文件。 尽管以下代码适用于 Xcode 模拟器,但由于某种原因,它不适用于我的测试 iPad(iPad Mini,第 5 代)。我可以选择一个文件,并且它的 URL 似乎被适当地获取了;但是,不会显示 PDF 文件。

如果您能帮我弄清楚发生了什么以及如何解决这个问题,我将不胜感激。

import UIKit
import PDFKit

class ViewController: UIViewController, UIGestureRecognizerDelegate,  UIDocumentPickerDelegate {
    
    
    @IBOutlet weak var pdfView: PDFView!
    
    
    override func viewDidAppear(_ animated: Bool) {
        
        //document picker
        let documentPicker = UIDocumentPickerViewController(documentTypes: ["com.adobe.pdf"], in: .import)
        documentPicker.delegate = self
        documentPicker.allowsMultipleSelection = false
        present(documentPicker, animated: true, completion: nil)
    }
    internal func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
        print(url)
        if let pdfDocument = PDFDocument(url: url)
        {
            pdfView.autoScales = true
            pdfView.document = pdfDocument
            pdfView.displayDirection = .horizontal
            pdfView.usePageViewController(true, withViewOptions: [UIPageViewController.OptionsKey.interPageSpacing: 20])
        } else{
            print ("error, which is what I am seeing in my iPad now")
        }
    }
    
    
    
    override func viewDidLoad(){
        super.viewDidLoad()
    }

环境细节:

  • iPad mini:第 5 代,iOS 14
  • Xcode:14
  • 模拟器:iOS 14(我试过 大多数模拟器和应用程序都可以很好地运行)

【问题讨论】:

    标签: swift xcode iso pdfkit ios14


    【解决方案1】:

    您忽略了url安全范围这一事实。请参阅“使用外部文档”一节中的documentation

    (另请注意,在 iOS 14 中,您的 initializer 已被弃用。但这是另一回事。)

    【讨论】:

    • 感谢您的洞察力,@matt!在阅读您发布的网站时,我更改了url -> fileUrl 以消除代码中的潜在歧义,其中`if let pdfDocument = PDFDocument(url: url)`。 (和其他地方)现在该应用程序实际上正在运行。你对此有什么想法吗?谢谢!
    • 这毫无意义。你的代码一定和你给我看的不一样。
    • 你是对的!我用url 替换了fileUrl,该应用程序仍在运行。虽然我没有刻意改变其他任何东西,但我可能在其他地方玩过并改变了一些东西。谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2022-11-07
    • 2011-08-03
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多