我正在使用 UIDocumentPickerViewController 将文档添加到我的应用程序。但在 iOS 11 中,没有调用didPickDocumentsAt,因此无法进行选择。而它在 iOS14 中运行良好。我已经阅读了stackoverflow中的几乎所有线程,但没有找到解决方案。它是 iOS 11 中的一个错误,因为它是在其中启动 documentpicker 的吗? 会计。到这个链接
不会生成有关任何内容的日志。任何帮助表示赞赏!
文档选择器启动器方法:
@IBAction func addDocBtn(_ sender: UIButton) {
//MARK: doc-picker
let docPicker = UIDocumentPickerViewController(documentTypes: ["public.text", "com.apple.iwork.pages.pages", "public.data"], in: .import)
docPicker.delegate = self
docPicker.modalPresentationStyle = .currentContext
self.navigationController?.present(docPicker, animated: true, completion: nil)}
我的代表:
extension AddReferralDetailsViewController : UIDocumentPickerDelegate{
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
print(urls.first as Any)
guard let selectedFileUrl = urls.first else {
return
}
let cico = selectedFileUrl as URL
print(cico)
selectedFileURL = cico
print(cico.lastPathComponent)
//hide doc btn
//update name and add cross sign
selectDocName = cico.lastPathComponent
DispatchQueue.main.async {
self.docDisplayStack.isHidden = false
self.addDocumentBtn.isHidden = true
self.selectedDocName.text = self.selectDocName
}
print(cico.pathExtension)
let dir = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
let sandBoxUrl = dir.appendingPathComponent(selectedFileUrl.lastPathComponent)
if FileManager.default.fileExists(atPath: sandBoxUrl.path){
print("already exists")
self.view.makeToast("Already Selected")
}
else{
do{
try FileManager.default.copyItem(at: selectedFileUrl, to: sandBoxUrl)
print("copied")
}
catch{
print(error)
self.view.makeToast(error.localizedDescription)
}
}
}
//this is called in everyversion but others behave differently
func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
print("no items selected")
}}