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

add image を nil に設定するだけです。うまく投稿できるはずです。

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

SLComposeViewControllerに関する Apple の公式ドキュメントによると、次のように表示されます。

戻り値

テキストが正常に設定されたかどうかを示すブール値を返します。討論

テキストが現在使用可能な文字スペースに収まらない場合、またはView Controllerがすでにユーザーに表示されている(したがって変更できない)場合、このメソッドはNOを返します。文字制限は対象サービスによって異なり、サービス プロバイダーによって文書化されています。サポートされているサービスのドキュメントへのリンクについては、SLRequest クラス リファレンスの「Table 1Social Services Individual Documentation Sites」を参照してください。

したがって、このコントローラーが既に表示されている場合、それは機能しません。別のテキストを試して、もう一度確認してください。

削除できますか

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 に答える