xcode 错误“[ShareSheet]连接无效”错误iOS13+,但在iOS 11.4上没有

b5lpy0ml  于 2022-12-27  发布在  iOS
关注(0)|答案(3)|浏览(222)

我想使用共享表共享一个文件,并且已经编写了看起来工作正常的代码。但是我一直在日志中看到这些错误消息(使用Xcode 11. 3)

[ShareSheet] connection invalidated

我有两个物理设备要测试;一台运行iOS 13.1.2的iPad和一台运行11.4的iPhone 6。我在运行旧版iOS的iPhone上看不到这些消息。这两种情况下,共享功能似乎都很好。下面是我使用文本而不是文件的代码:

let activityViewController = UIActivityViewController(activityItems: ["simple text for test"], applicationActivities: nil)
activityViewController.excludedActivityTypes = [.message, .airDrop]
activityViewController.popoverPresentationController?.barButtonItem = myBarButtonItem           
self.present(activityViewController, animated: true, completion: nil)

当共享表消失时(因为用户完成了操作,或者他们在其外部点击以取消),显示该消息。
忽略这些消息安全吗?奇怪的是,它们在旧的操作系统中没有出现,但在新的操作系统中却出现了。
2020年3月20日编辑:我已验证我提供的源或barButtonItem是否有效。我已更改代码以匹配使用UIBarButtonItem的代码,但仍然看到ShareSheet连接无效错误。

px9o7tmv

px9o7tmv1#

我得到了
[ShareSheet]连接无效
在iOS 13.x上的Xcode输出日志中,共享表被压扁,其中没有任何按钮。
要解决此问题,请将sourceView分配给比self.view更具体的对象
在我的例子中,我有一些UILabels靠近我的视图顶部,所以我把我的sourceView设置为其中之一。例如,在我的父视图控制器中,我有一个名为labelCustomerNameUILabel,所以我使用:

activityViewController.popoverPresentationController?.sourceView = self.labelCustomerName
js5cn81o

js5cn81o2#

对我来说,当我添加这段代码时,它就解决了,基于Apple developer documentation

activityViewController.isModalInPresentation = true

顺便说一句,看起来即使按下活动的关闭按钮,它仍然显示该消息。

hmtdttj4

hmtdttj43#

试试这个...

let documentsPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!
        let fileURL = documentsPath.appendingPathComponent(filename)
        
        let activityController = UIActivityViewController(activityItems: [fileURL], applicationActivities: nil)
        present(activityController, animated: true, completion: nil)

相关问题