繁体   English   中英

UIDocumentpicker 内容变灰

[英]UIDocumentpicker Content are greyed out

我在 swiftUI 中使用 UIViewControllerRepresentable 进行文档选择器演示。 问题是我无法选择所有以冻结方式显示的视频音频 pdf。 我需要为 iOS 14 及更高版本修复此问题。 我可以通过按住来选择文件,然后释放它只适用于真实设备中的模拟器,除了文件结构外,模拟器和设备都不可能,其余文件都是灰色的。

在此处输入图像描述

struct DocumentPicker: UIViewControllerRepresentable {
    @ObservedObject var chatViewModel: RedesignChatViewModel
    func makeUIViewController(context: UIViewControllerRepresentableContext<DocumentPicker>) -> UIDocumentPickerViewController {
        let viewController = UIDocumentPickerViewController(forOpeningContentTypes: [.pdf, .mp3, .audio, .video, .movie, .item])
        viewController.shouldShowFileExtensions = true
        viewController.allowsMultipleSelection = false
        viewController.delegate = context.coordinator
        return viewController
    }
    func updateUIViewController(_ uiViewController: UIDocumentPickerViewController, context: Context) {
    }
}
extension DocumentPicker {
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    class Coordinator: NSObject, UIDocumentPickerDelegate {
        var parent: DocumentPicker
        var path: String?
        init(_ documentPicker: DocumentPicker) {
            self.parent = documentPicker
        }
        func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
            guard let url = urls.first else { return }
        func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
            controller.dismiss(animated: true)
        }

有一些错误,首先您需要创建一个UIViewController并使用它来呈现UIDocumentPickerViewController 您还需要将Coordinator(self)更改为Coordinator()并在makeUIViewController中返回context.coordinator.myViewController这应该是一个惰性属性。 这样做的原因是您传入的self立即过时,因为它是一种值类型。 您还需要删除@ObservedObject并为您的属性添加let@Binding var 当 representable 初始化为这些属性的新值时, updateUIViewController将被调用,然后您可以使用新值更新协调器和视图控制器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM