Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 不使用UIDocumentPickerViewController直接从外部驱动器访问文件_Swift_Ios13_Uidocumentpickerviewcontroller_Ipados - Fatal编程技术网

Swift 不使用UIDocumentPickerViewController直接从外部驱动器访问文件

Swift 不使用UIDocumentPickerViewController直接从外部驱动器访问文件,swift,ios13,uidocumentpickerviewcontroller,ipados,Swift,Ios13,Uidocumentpickerviewcontroller,Ipados,据此: iOS 13增加了UIDocumentPickerViewController选择目录的功能,包括从第三方文件提供程序选择目录 单击ViewController中的按钮,调用下面的函数“showPickerView” 我们使用下面的代码片段,通过照明电缆访问外部USB驱动器 func showPickerView() { let url = URL(string: "/some_path_here/NO%20NAME/DCIM")! let d

据此:

iOS 13增加了UIDocumentPickerViewController选择目录的功能,包括从第三方文件提供程序选择目录

单击ViewController中的按钮,调用下面的函数“showPickerView”

我们使用下面的代码片段,通过照明电缆访问外部USB驱动器

func showPickerView()  {  
        let url = URL(string: "/some_path_here/NO%20NAME/DCIM")!  
        let documentPicker = UIDocumentPickerViewController(documentTypes: [kUTTypeFolder as String], in: .open)  
        documentPicker.delegate = self  
        documentPicker.allowsMultipleSelection = false  
        documentPicker.directoryURL = url  
        documentPicker.modalPresentationStyle = .custom  
        documentPicker.definesPresentationContext = true  
        documentPicker.transitioningDelegate = customTransitioningDelegate  
        self.present(documentPicker, animated: true, completion: nil)  
    }  
调用此功能后,将显示下面的弹出窗口

用户将单击“完成”标签,该标签将调用以下代码

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {  

        guard let url = urls.first else {  
            return  
        }  
        print(url)  
    //Access using security-scoped resource  
}  
我们的目标是:不显示文档选择器的弹出窗口并单击“完成”按钮,直接从外部驱动器访问文件(我们已经知道外部驱动器的路径)

原因:对于最终用户来说,这个弹出窗口很烦人

我们已经尝试过的选择

  • 显示文档选择器,但自动关闭它

  • 获取右上方“完成”按钮的对象-执行buttonObj.sendActions(对于:.touchUpInside) 以编程方式,提供打开此弹出窗口后将播放的一些手势/快捷方式

  • 通过更改“不透明度”或“可见性”选项隐藏此弹出窗口
  • 目前,上述任何选项都不起作用


    请告诉我们,如果有任何其他建议的方法来解决这个问题。

    我认为这样的尝试欺骗用户的行为将很容易被App Store拒绝。 这是关于安全范围的

    尝试设置
    documentPicker.directoryURL
    ,这样选择器将开始突出显示您已经知道的路径

    更多信息请点击此处:

    如果指定directoryURL属性,文档选择器将从选定目录开始。否则,它将从用户选择的最后一个目录开始


    您还可以正常情况下仅显示一次提示,然后将结果保存在安全范围的书签中:

    在以后的实例中,您可以从书签中恢复URL,而无需再次显示弹出窗口