我将 UIDocumentInteractionController
与下载后驻留在缓存中的临时文件一起使用。我正在使用一个非常简单的类,它向我的应用程序提供 md5-cache
文件名 (ext = cache),下载的文件就是这种格式。原因是在本地有文件并且只下载一次(一个 session )。由于缓存名称采用统一格式,因此我可以轻松清理它们。
现在有了 UIDocumentInteractionController
,我需要将这些文件重命名回它们的原始名称,否则它们将无法被正确识别。
当 UIDocumentInteractionController
完成文件传递时,我想将文件移回其缓存文件名。问题是,方法:- documentInteractionController:didEndSendingToApplication:
永远不会被调用 - 尽管委托(delegate)设置正确。
我是如何设置 Controller 的:
interactionController = [UIDocumentInteractionController interactionControllerWithURL:[NSURL fileURLWithPath:temporaryFile]];
interactionController.delegate = self;
interactionController.annotation = [cacheURLString lastPathComponent]; // original name to move back to
关于如何正确发现文件已移交给另一个应用程序/或 UIDocumentInteractionController
已被取消的任何建议?
最佳答案
我发现 documentInteractionController:didEndSendingToApplication:
在文档被发送到另一个应用程序时被调用,但在通过电子邮件发送文档时不会被调用(可能还有其他内置函数,如 AirDrop,复制、打印等)。这对我来说似乎是一个错误,但确实存在。
Tony 在评论中的回答对我有用 - 使用 [[NSFileManager defaultManager] linkItemAtURL:toURL:error]
将源文件链接到临时文件并将临时文件传递给 Controller 。这不会占用大量额外空间,临时链接将在一定时间后删除。
关于iphone - 使用 UIDocumentInteractionController 处理临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454645/