问题标签 [uidocumentbrowserviewcontroller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios - UIDocumentPickerViewController 或 UIDocumentBrowserViewController 上的奇怪显示
我最近遇到了一个UIDocumentPickerViewController
无法正确显示的 UI 问题。见下图。
另外,我试过UIDocumentBrowserViewController
了,得到了同样的结果。
有没有人遇到过这个问题?
代码:
firebase - Can a SwiftUI document based app show Firestore documents in the SwiftUI document browser directly?
Using Swift 5.3.1, Xcode 12.2, iOS 14.2.
Is it possible to directly access Firestore documents from within a DocumentGroup
based iOS app?
I know that you can show the document browser with iOS 14 and SwiftUI. And it is also able to show iCloud or custom cloud documents.
But I wonder if Firestore can be the external cloud for your custom-typed document picker in iOS?
If yes, how?
ios - 在基于文档的应用程序中隐藏文件扩展名 - DocumentGroup 和 UIDocumentBrowser
我已经开发基于文档的应用程序超过 12 个月了。它已经上架了,到目前为止一切都进展顺利,除了自 iOS 13 以来我一直无法解决的问题。
内置文件查看器显示我所有的应用程序文件扩展名。我已经使用 DocumentGroup 在 SwiftUI 中重写了应用程序,但也看到了 UIDocumentBrowser 的问题。
甚至 Apple 自己的Particles 演示应用程序也存在此问题。
我认为这可能是一个错误,对此我无能为力,但我也没有看到其他人谈论这个。所以这同样可能是我做错的事情。
是否有可能我需要更改的设置?
- 我看了看,
NSFileExtensionHidden
但这已经设置为true。 - 查看浏览器中的其他文件 - 在我的应用程序中 - 显示这些文件的扩展名已隐藏。但这可能只是因为我的应用程序不支持打开它们。
ios - 当基于场景的文档mac催化剂应用程序在应用程序重启时重新打开窗口时如何避免奇怪的行为?
我一直在努力让 mac 催化剂应用程序的 mac 版本正常工作。这是一个基于场景、基于 DocumentBrowserViewController 的应用程序,在 iPad 上运行良好。在 Mac 上,它工作正常,除非您在屏幕上打开一个或多个文档窗口时关闭应用程序。当应用程序重新启动时,这些窗口会重新打开(除非用户在 Mac 系统偏好设置常规选项卡上选择了在退出应用程序时关闭窗口),并且由于使用了安全范围的书签,这些窗口会填充最后一个文档。但是,这些由 macOS(版本 11.3.1)自动重新打开的窗口/场景不像在基于场景的应用程序中那样运行,它们就像基于 AppDelegate 的非基于场景的应用程序一样。我的意思是,当使用系统提供的 New 菜单项时,DocumentBrowserViewController 看起来应该是这样,但是从浏览器中选择的文档会加载到系统提供的一个窗口中,替换那里的文档,而不是在新窗口/场景中打开。如果关闭这些窗口,然后选择 New 菜单项,第一次选择文件时它没有打开,并且在日志中有一条消息:“Scene destroy request failed with error: (null)”然后一个消息:
[演示] 尝试在 <EP_Diagram.DocumentBrowserViewController: 0x7f9fd880a400> 上呈现 <UINavigationController: 0x7f9fd9808e00>(来自 <EP_Diagram.DocumentBrowserViewController: 0x7f9fd880a400>),其视图不在窗口层次结构中。
下次您选择新建时,文档浏览器将打开,您可以选择一个文件并在新窗口/场景中正常打开。
我使用 self.present(controller, animated: true) 从文档浏览器视图控制器呈现文档视图控制器,并尝试了各种技巧,包括通过将文档视图控制器设置为窗口的 rootViewController 来呈现文档视图控制器。我几乎尝试了所有方法,但我确信根本问题是应用程序重新启动时系统打开的窗口不像基于场景的窗口那样表现。我面临着留下这种奇怪的行为,烦人的用户,可能会招致 App Store 拒绝,或者建议用户在应用程序退出一般偏好时打开关闭的窗口,烦人的用户,或者复制代码库并使 mac 催化剂版本成为单一窗口,基于 AppDelegate 的,非基于场景的,烦我,丢掉多窗口能力。
有没有其他人遇到过这个问题,有什么解决方案吗?听起来像是 Mac 催化剂还是 macOS 错误?
ios - 如何使用 UIDcommentBrowserViewController 写入文件
是一种在UIDocumentBrowserViewController中读取/写入多个文件的方法。
最近,我知道 UIDocumentBrowserViewController 作为 rootViewController 可以读取文件。但是如何写文件。
例如,我想读取 zip 文件,然后将其解压缩到当前文件夹。
swift - iOS 15 中的文档浏览器应用程序不断创建 iCloud 驱动器文件夹
自 iOS 11 以来,我已经有了一个文档浏览器应用程序(使用 UIKit/UIDocumentBrowserViewController)。该应用程序(我们称之为“MyApp”)用于在 iCloud Drive(和/或设备上,取决于设置中的选择)中创建一个“MyApp”文件夹,文档将自动保存在该文件夹中。
将我的设备更新到 iOS 15 并重新编译后,没有对代码进行任何更改,该应用程序似乎不再识别 iCloud Drive 中自己的文件夹。每次从应用程序外部(文件、邮件等)打开/导入文件时,应用程序都会在 iCloud Drive 中创建一个新的“MyApp”文件夹并将文档保存在那里。现有文件夹重命名为“MyApp 2”(如果我尝试导入另一个文档,则为“MyApp 3”、“MyApp 4”等)。
这似乎只发生在 iCloud Drive 中。如果我在设置中选择将文档保存在我的设备上,所有文档都会自动导入到“我的应用程序”文件夹中,就像 iOS 14 及更早版本中的情况一样。
我还尝试使用 Xcode 13 UIKit 基于文档的应用程序模板从头开始创建一个测试应用程序,并且行为似乎完全相同......所以看起来 UIDocumentBrowserViewController 中的一个错误是在 iOS 更新中引入的。
有没有人注意到同样的事情?有解决方案/解决方法吗?是否应该提交错误报告?
感谢您的帮助。
[编辑] 如果有人感兴趣,这是使用 Xcode 模板重现问题的最简单方法:
- 在 Xcode 13.0 中创建一个新项目
- 选择 iOS -> 文档应用程序
- 选择 Interface: Storyboard 并创建项目(为简单起见,我们使用“MyApp”作为产品名称)
- 在启用了 iCloud Drive 的运行 iOS 15.0 或 15.0.1 的设备上构建和安装 MyApp
- 在 Settings -> MyApp 中保留 Document Storage(即 iCloud Drive)的默认设置
- 创建一个包含任何内容的文本文件并将其保存为扩展名“exampletext”(即应用模板使用的导入类型标识符 - 我们称该文件为“test.exampletext”)
- 使用 test.exampletext 作为附件将电子邮件发送到可从设备访问的收件箱
- 在设备上打开 Mail,长按 test.exampletext 并分享到 MyApp
- 如果 iCloud Drive 中存在“MyApp”文件夹,则将其重命名为“MyApp 2”;将创建一个新的“MyApp”文件夹,并将 test.exampletext 保存在新文件夹中
- 再次从邮件中分享 test.exampletext 到 MyApp 将创建另一个“MyApp”文件夹并重命名前一个;可以通过这种方式创建任意数量的“MyApp n”文件夹,每个文件夹都包含一份文档副本