问题描述
我正在创建一个应用程序,以显示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(我尝试了 大多数模拟器,并且该应用程序都可以很好地与它们一起使用)
解决方法
您忽略了url
受安全范围限制的事实。请参阅“使用外部文档”一节中的documentation。
(还要注意,在iOS 14中,您的initializer已过时。但这是另一回事。)