1

我正在使用以下代码在 Facebook 上发布一些内容。

- (IBAction)post:(id)sender {
if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
{
    mySocialComposer = [[SLComposeViewController alloc]init];
    mySocialComposer = [SLComposeViewController 
    composeViewControllerForServiceType:SLServiceTypeFacebook];
    [mySocialComposer setInitialText:@"Hellooooooo World"];
    [mySocialComposer addImage:[UIImage imageNamed:@"image.jpg"]];

    [self presentViewController:mySocialComposer animated:YES completion:nil];


[mySocialComposer setCompletionHandler:^(SLComposeViewControllerResult result){

    NSString *outout = [[NSString alloc] init];

    switch (result) {
        case SLComposeViewControllerResultCancelled:
            outout = @"Post Cancled";
            break;
            case SLComposeViewControllerResultDone:
            outout = @"Post Successfull";

        default:
            break;
    }


    UIAlertView *myalertView = [[UIAlertView alloc]initWithTitle:@"FaceBook" 
    message:outout delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
    [myalertView show];

}];
}

}

我正在使用上述方法从 iOS 应用程序在 Facebook 上发布。如果我发布的内容包括图片和一些文本,则它成功地发布在 Facebook 上。但是,当我尝试在没有图片的情况下在 Facebook 上发帖时,我只是为了这个目的而注释掉了以下行。

  [mySocialComposer addImage:[UIImage imageNamed:@"image.jpg"]];

在此过程中,我收到一条错误警报,提示无法发送此帖子,因为与 Facebook 的连接丢失。有什么方法可以在没有图片的情况下在 Facebook 上发帖。提前致谢。

4

2 回答 2

2

您可以将添加图像设置为零。你应该可以发帖了。

if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
    {
        SLComposeViewController* mySocialComposer = [SLComposeViewController
                            composeViewControllerForServiceType:SLServiceTypeFacebook];
        [mySocialComposer setInitialText:@"Hellooooooo World"];
        [mySocialComposer addImage:nil];

        [self presentViewController:mySocialComposer animated:YES completion:nil];


        [mySocialComposer setCompletionHandler:^(SLComposeViewControllerResult result){

            NSString *outout = [[NSString alloc] init];

            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    outout = @"Post Canceled";
                    break;
                case SLComposeViewControllerResultDone:
                    outout = @"Post Successfull";

                default:
                    break;
            }
于 2012-10-07T21:58:31.770 回答
1

根据 Apple 关于SLComposeViewController的官方文档,您会看到它说

返回值

返回一个布尔值,指示文本是否已成功设置。讨论

如果文本不适合当前可用的字符空间或视图控制器已经呈现给用户(因此无法更改),则此方法返回 NO。字符限制取决于目标服务并由服务提供商记录。有关受支持服务的文档链接,请参阅 SLRequest 类参考中的“表 1 社会服务个人文档站点”。

因此,如果该控制器已经显示,它将无法工作。尝试不同的文本并再次查看。

你能去掉吗

mySocialComposer = [[SLComposeViewController alloc]init];

你不应该那样做。

[mySocialComposer setInitialText:@"Hellooooooo World"];
[mySocialComposer addImage:[UIImage imageNamed:@"image.jpg"]];

[self presentViewController:mySocialComposer animated:YES completion:nil];

在设置完成处理程序后放置这些代码行。

还要从那里删除 UIAlertView 并将其放在完成处理程序中以用于错误情况。

于 2012-10-05T06:20:11.107 回答