问题描述
我最近遇到了UIDocumentPickerViewController
无法正确显示的UI问题。参见下面的图片。
此外,我尝试了uidocumentbrowserviewcontroller
,得到了相同的结果。
有人遇到过这个问题吗?
代码:
extension UIDocumentPickerViewController {
private static weak var instance: UIDocumentPickerViewController?
private static var completion: (([URL]?)->Void)?
@objc public class func show(on viewController: UIViewController,supportedDocumentTypes: [String]?,completion: @escaping ([URL]?)->Void) {
var vc: UIDocumentPickerViewController?
if #available(iOS 14.0,*) {
var types = [UTType]()
if let supportedDocumentTypes = supportedDocumentTypes {
supportedDocumentTypes.forEach { (typestring) in
if let type = UTType(typestring) {
types.append(type)
}
}
} else {
types.append(.pdf)
if let type = UTType("com.microsoft.word.doc") {
types.append(type)
}
if let type = UTType("com.microsoft.excel.xls") {
types.append(type)
}
if let type = UTType("com.microsoft.powerpoint.ppt") {
types.append(type)
}
if let type = UTType("org.openxmlformats.wordprocessingml.document") {
types.append(type)
}
if let type = UTType("org.openxmlformats.presentationml.presentation") {
types.append(type)
}
if let type = UTType("org.openxmlformats.spreadsheetml.sheet") {
types.append(type)
}
}
vc = UIDocumentPickerViewController(foropeningContentTypes: types,ascopy: true)
} else {
var types = [String]()
if let solidInputTypes = supportedDocumentTypes {
types.append(solidInputTypes)
} else {
types.append([ "com.adobe.pdf","com.microsoft.word.doc","com.microsoft.excel.xls","com.microsoft.powerpoint.ppt","org.openxmlformats.wordprocessingml.document","org.openxmlformats.presentationml.presentation","org.openxmlformats.spreadsheetml.sheet" ])
}
vc = UIDocumentPickerViewController(documentTypes: types,in: .open)
}
guard let documentPicker = vc else { return }
documentPicker.allowsMultipleSelection = true
documentPicker.modalPresentationStyle = .fullScreen
documentPicker.delegate = vc
UIDocumentPickerViewController.completion = completion
UIDocumentPickerViewController.instance = vc
viewController.present(documentPicker,animated: true,completion: nil)
}
}
extension UIDocumentPickerViewController: UIDocumentPickerDelegate {
public func documentPicker(_ controller: UIDocumentPickerViewController,didPickDocumentsAt urls: [URL]) {
UIDocumentPickerViewController.completion?(urls)
UIDocumentPickerViewController.completion = nil
}
public func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
UIDocumentPickerViewController.completion?(nil)
UIDocumentPickerViewController.completion = nil
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)