在UIActivityItemProvider中自定义UIActivityTypePostToFacebook的行为

时间:2013-11-24 10:09:42

标签: ios iphone objective-c uiactivityviewcontroller uiactivity

我不相信有办法做我想要问的事,但我想我会问以防万一。

我目前正在为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图标时,在segue中呈现的其他类型的自定义视图,直到他们看到他们在帖子的文本中键入的实际UI。

有没有办法做这种行为?

1 个答案:

答案 0 :(得分:0)

您希望简单地实现NSObject的子类并实现UIActivityItemSource协议。然后,从activityViewController:itemForActivityType:返回NSURL个对象。这将作为Facebook帖子的URL附件,并将其传递给UIActivityViewController

如果安装了Facebook App,它将打开应用程序的共享对话框,否则将打开iOS Native share对话框,并将URL作为附件打开。

根据Facebook指南,您无法预先填写共享文本。你可以用Twitter做到这一点,但为此你必须有NSObject的另一个子类并实现UIActivityItemSource并从同一个Message返回NSString。这将作为推文的文本。

同样,我相信返回UIImage可以将其设置为Facebook中的附件。