英文:
Sharing a file on iPad fails with "[ShareSheet] Failed to request default share mode for fileURL:..."
问题
[ShareSheet] 在 iPad 上使用文件 URL 共享时,控制台中会出现以下错误消息:
"Failed to request default share mode for fileURL:..."
在共享完成处理程序中没有报告错误。在 iPhone 上以及在 iPad 分屏视图中,它可以正常工作。
代码如下:
let avc = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)
avc.popoverPresentationController?.sourceView = self.view
let h: UIActivityViewController.CompletionWithItemsHandler = { [weak self] (type: UIActivity.ActivityType?, completed: Bool, modifiedItems: [Any]?, error: Error?) -> Void in
self?._handleShareResponse(completed: completed, error: error)
}
avc.completionWithItemsHandler = h
self.present(avc, animated: true, completion: nil)
我期望它能在全屏模式和分屏模式下正常工作。
英文:
When I shared a file by its URL on an iPad the following error message appears in the console:
[ShareSheet] Failed to request default share mode for fileURL:...
An error is not reported in the sharing completion handler. It works correctly on iPhone and in iPad split view.
The code looks like this:
let avc = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)
avc.popoverPresentationController?.sourceView = self.view
let h: UIActivityViewController.CompletionWithItemsHandler = { [weak self] (type: UIActivity.ActivityType?, completed: Bool, modifiedItems: [Any]?, error: Error?) -> Void in
self?._handleShareResponse(completed: completed, error: error)
}
avc.completionWithItemsHandler = h
self.present(avc, animated: true, completion: nil)
I expected it to work in full screen mode as well as in split view mode.
答案1
得分: 1
问题实际上不在于文件的访问,尽管错误消息中似乎是这样认为的。iPad 上共享弹出窗口的视图锚点必须正确设置。
因此,定义锚点的那一行应该如下所示:(我在其中使用了导航栏和其中的一个 barButtonItem。)
avc.popoverPresentationController?.barButtonItem = barButtonItem
也许这对其他人有所帮助,尤其是错误消息通常不太有帮助。
英文:
The problem is actually not the access to the file, as is lead to believe by the error message. The view anchor for the sharing popup has to be set correctly on iPad.
So the line which defines the anchor should look like this: (I used a navigation bar and a barButtonItem in it.)
avc.popoverPresentationController?.barButtonItem = barButtonItem
Maybe this helps others especially the error message is very unhelpful.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论