17

我想使用共享表共享一个文件,并编写了似乎可以正常工作的代码。但是我一直在日志中看到这些错误消息(使用 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 连接无效错误。

4

2 回答 2

10

我有

[ShareSheet] 连接无效

在 iOS 13.x 上的 Xcode 输出日志中,共享表被压扁并且没有任何按钮。

要修复它,请将您分配给sourceViewself.view

在我的情况下,我有一些UILabels接近我的观点,所以我将我的设置sourceView为其中之一。例如,在我的父视图控制器中,我有一个UILabel命名labelCustomerName,所以我使用了:

activityViewController.popoverPresentationController?.sourceView = self.labelCustomerName
于 2020-01-17T01:34:52.637 回答
3

对我来说,当我根据Apple 开发人员文档添加此代码时,它就解决了。

activityViewController.isModalInPresentation = true

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

于 2020-03-27T17:03:11.340 回答