如何解决在UIDocumentPickerViewController或UIDocumentBrowserViewController上奇怪的显示
我最近遇到了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 举报,一经查实,本站将立刻删除。