在iPad上进行测试时,UIDocumentPickerViewController无法正常工作,但在模拟器上可以正常工作

时间:2020-09-22 22:26:34

标签: swift xcode iso pdfkit ios14

我正在创建一个应用程序,以显示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:第五代,iOS 14
  • Xcode:14
  • 模拟器:iOS 14(我尝试了 大多数模拟器,并且该应用程序都可以很好地与它们一起使用)

1 个答案:

答案 0 :(得分:0)

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

(还要注意,在iOS 14中,您的initializer已过时。但这是另一回事。)