在 UIActivityItemProvider 内自定义 UIActivityTypePostToFacebook 的行为
Posted
技术标签:
【中文标题】在 UIActivityItemProvider 内自定义 UIActivityTypePostToFacebook 的行为【英文标题】:Customize the behavior of UIActivityTypePostToFacebook inside of UIActivityItemProvider 【发布时间】:2013-11-24 10:09:42 【问题描述】:我不相信有办法做我要问的事情,但我想我会问以防万一。
我目前正在继承UIActivityItemProvider
,以便为各种社交媒体平台提供定制消息:
- (id)item
if ([self.activityType isEqualToString:UIActivityTypePostToFacebook])
//Possibly present some view modally here to let the user decide on text to return?
return @"Some facebook message";
else if ([self.activityType isEqualToString:UIActivityTypePostToTwitter])
return @"Some Tweet";
问题是我想为用户提供一个中间选项来自定义他们想要在 facebook 上发布的消息(“一些 facebook 消息”)。理想情况下,这将是一个 UIActionSheet,他们可以在三个选项中选择他们希望如何格式化数据的选项之一。
UIActionSheet 只是一个示例,但您可以想象其他类型的自定义视图在用户点击 facebook 图标直到他们看到他们在帖子中输入文本的实际 UI 期间呈现在 segue 中。
有没有办法做到这种行为?
【问题讨论】:
【参考方案1】:您只想实现NSObject
的子类并实现UIActivityItemSource
协议。然后,从 activityViewController:itemForActivityType:
返回一个 NSURL
对象。这将作为 Facebook 帖子的 URL 附件,您将其传递给 UIActivityViewController
。
如果安装了 Facebook 应用程序,它将打开应用程序的共享对话框,否则将打开 ios 原生共享对话框,其中 URL 作为附件。
根据 Facebook 指南,您不能预先填写分享的文字。不过你可以用 Twitter 做到这一点,但为此你必须有另一个 NSObject 子类并实现 UIActivityItemSource
并从同一消息返回 NSString
。这将作为推文的文本。
同样,我相信返回 UIImage
可以将其设置为 Facebook 中的附件。
【讨论】:
以上是关于在 UIActivityItemProvider 内自定义 UIActivityTypePostToFacebook 的行为的主要内容,如果未能解决你的问题,请参考以下文章
当 UIActivityViewController 呈现时,如何确保 UIActivityItemProvider 的项目准备就绪?
Xcode 8 beta 6 UIActivityItemProvider 错误与@objc 兼容性
iOS UIActivityViewController 使用 UIActivityItemProvider “忘记”项目
UIActivityViewController 的标题是怎么设置的?