UIActivityViewController 在特定动作中使用项目

Posted

技术标签:

【中文标题】UIActivityViewController 在特定动作中使用项目【英文标题】:UIActivityViewController use items in specific actions 【发布时间】:2013-02-09 00:32:11 【问题描述】:

我有一个 UIActivityViewController,我想让它拥有 safari 所做的所有动作等等。目前我只能收到邮件、消息、推特、脸书和半工作副本。我使用 url 设置活动项目数组。然后,我添加了该 url 的 nsstring 并将其与 url 一起添加,一切都很好,就像复制字符串一样复制效果更好,然后我将其粘贴到更多区域。但是当也有字符串时,twitter 和 facebook 将 url 添加到他们的文本中并包含链接。我怎样才能做到让他们没有文字,只有链接?另一个问题是如何在 twitter 和 facebook 活动的链接中显示 web 视图预览?它只显示一个 Safari 图标。第三个问题是如何打印网页的内容?

【问题讨论】:

【参考方案1】:

为不同的服务提供不同的项目,您可以继承UIActivityItemProvider。它符合UIActivityItemSource协议,所以你实现方法:

- (id)activityViewController:(UIActivityViewController *)activityViewController
         itemForActivityType:(NSString *)activityType 
    // compare `activityType` and return what you want

【讨论】:

【参考方案2】:

我发现了这个https://www.albertopasca.it/whiletrue/objective-c-custom-uiactivityviewcontroller-icons-and-text/,它展示了如何为每个服务做不同的内容

【讨论】:

【参考方案3】:

对于 twitter 或 facebook,您需要使用正确类型的 twitter/facebook 帖子(请参阅底部的常量 here)和有效负载来设置 UIActivity。

【讨论】:

我有它们,但它会设置文本和网址。所以它添加了两次 url 基本上是因为活动项目是 url 和字符串。但在 Safari 中,它们只有 url,并且复制功能正在复制一个字符串,因为我可以将其粘贴到消息中 @MaxHasADHD 您能否发布一些代码,其中包含您的 activityItems 的内容以及您的期望。看起来如果您只将 url 作为 NSString,您将能够复制它 并且 twitter 会将其插入为文本,而不是 url。 是的,我希望它是一个 NSString 活动项,但如果希望 twitter 和 facebook 将其作为 url 而不是初始文本包含在内。如果我同时包含,则 twitter 和 facebook 将其设置为文本和 url。如果我只使用 url 并复制它,那么我无法将其粘贴到消息应用程序中,safari 可以。有没有办法告诉 twitter 只使用 url 而不是字符串而不使用自定义活动类?如果我必须上课,我可以使用一个完整的图标,让它看起来一样吗?

以上是关于UIActivityViewController 在特定动作中使用项目的主要内容,如果未能解决你的问题,请参考以下文章

UIActivityViewController 背景颜色

UIActivityViewController 共享 UIActivity 未显示

UIActivityViewController 不适用于 WKWebView

限制 UIActivityViewController 共享扩展活动

尝试呈现 UIActivityViewController 时崩溃

更改 UIActivityViewController 的 navigationBar 的颜色