UIActivityController 共享表为空白

Posted

技术标签:

【中文标题】UIActivityController 共享表为空白【英文标题】:UIActivityController share sheet is blank 【发布时间】:2016-09-24 17:55:41 【问题描述】:

我提到了很多关于这个的 SO 问题,大多数似乎都得到了解决,因为 OP 正在尝试模拟器而不是真实设备。

我一直在尝试这两种方法,但我看到的只是下面的图片。我之前在另一个项目中成功地使用了相同的代码,所以不确定出了什么问题。缺少所有选项,更多为空白。这是在其他应用的共享表工作正常的真实设备上。

这是我的代码。我正在使用 Xcode 8.1(beta) 和 ios 10.1(beta)。

    let objectsToShare = ["My text", URL(string: "http://www.google.com") ] as [Any]
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
    activityVC.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.postToVimeo, UIActivityType.print, UIActivityType.saveToCameraRoll]

    activityVC.popoverPresentationController?.sourceView = sender
    self.present(activityVC, animated: true, completion: nil)

【问题讨论】:

这方面有什么帮助吗? 确保所有内容都已解包或不是可选的,否则不会在任何地方共享。以下@marlo 提供的答案 【参考方案1】:

我刚刚克服了这个问题,我确保添加到 activityItems 的所有内容都已解包/不是可选的

var activityItems: [Any] = []

if let shareURL = URL(string: shareLink) 
    activityItems.append(shareURL)


if let shareImage = getShareScreenShot() 
    activityItems.append(shareImage)


activityItems.append(shareMessage)

let activity = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)

【讨论】:

【参考方案2】:

我已经在我的物理设备上运行了您的代码而没有进行编辑,这可能可以帮助您解决问题:

结果:


代码:

class ViewController: UIViewController 
  
  @IBAction func buttonWasTouched(_ sender: UIButton) 
    let objectsToShare = ["My text", URL(string: "http://www.google.com") ] as [Any]

    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
    activityVC.excludedActivityTypes = [UIActivityType.addToReadingList, UIActivityType.postToVimeo, UIActivityType.print, UIActivityType.saveToCameraRoll]
    
    activityVC.popoverPresentationController?.sourceView = sender
    self.present(activityVC, animated: true, completion: nil)
  



iPhone 5S 真机,操作系统版本:


Xcode 版本:

【讨论】:

【参考方案3】:

使用可选绑定解包并将项目附加到数组对我不起作用,给出了相同的结果。这是有效的:

guard let image = UIImage(named: "test.png", let url = URL(string: "https://www.google.com") else  return 

let activityController = UIActivityViewController(activityItems: [image,url], applicationActivities: nil)

【讨论】:

【参考方案4】:

我是这样解决这个问题的:

    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

    activityVC.excludedActivityTypes = [
        UIActivityType.assignToContact,
        UIActivityType.print,
        UIActivityType.addToReadingList,
        UIActivityType.saveToCameraRoll,
        UIActivityType.openInIBooks,
        UIActivityType(rawValue: "com.apple.reminders.RemindersEditorExtension"),
        UIActivityType(rawValue: "com.apple.mobilenotes.SharingExtension"),
    ]

【讨论】:

以上是关于UIActivityController 共享表为空白的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UIActivityController 在 whatsapp 上共享文本和图像(两者):Objective C?

UIActivityController 分享 URL 文件

更改 UIActivityController 的标题文本颜色

从 iOS 中的 UIActivityController 选项中删除注释

不能同时从 UIActivityController 打印和发送电子邮件

UIActivityController 在 Facebook 上分享时不报告文字和图片