我正在尝试允许我的应用程序同时打开多个文件-例如,使用文件应用程序选择多个文件,然后按“在我的应用程序中打开”。当我尝试这样做时,果然UIApplicationDelegate openURL会在我的应用程序中触发,但我只得到了一个URL。有没有办法获得所有的文件,而不只是其中的一个?
发布于 2020-11-25 15:09:03
你的观察是正确的,使用openURL调用你将只得到一个文件。这个问题的替代解决方案是实现一个操作扩展。
官方开放URL调用不允许来自操作扩展,但您可以迭代响应器链,并可以使用它打开您的应用程序:
let selectorOpenURL = sel_registerName("openURL:")
while (responder != nil){
if responder?.responds(to: selectorOpenURL) == true{
responder?.perform(selectorOpenURL, with: url)
}
responder = responder!.next
}编辑:
对评论中提出的几点的回答:
摘要:您可以通过实现共享扩展来避免OpenURL的棘手部分,这将解决用户使用OpenURL而不是操作扩展的问题。但是,如果您使用大量内存,这可能会实现,因为共享扩展和操作扩展具有有限的内存访问。在这种情况下,您可能希望切换到您的主应用程序(OpenURL技巧)。
https://stackoverflow.com/questions/58560147
复制相似问题