3

ベース SDK を 6.0 に設定し、展開ターゲットを 6.0 に設定しました。

ビルドすると、次のエラーが発生します。「TWTweetComposeViewController」は非推奨です: iOS 6.0 で最初に非推奨になりました

展開ターゲットを 5.1 に落とすと、エラーなしでコンパイルされます。TWTweetComposeViewController は「iOS 5.0 以降で使用可能」であるため、これは私の予想とは逆のようです。

そのままにしておきますが、Social/Social.h も使用しています。これは 6.0 以降でのみ使用でき、5.1 ユーザーにとってはエラーが発生しやすくなります。

これは問題のあるコード行です:

if ([TWTweetComposeViewController canSendTweet]){

これに頭を悩ませています。私が見逃したあいまいな設定であることを願っています。

前もって感謝します。

4

2 に答える 2

5

iOS 6.0 では、Social.framework と呼ばれるすべてのソーシャル インタラクションを処理する新しいフレームワークがあるため、TWTweetComposeViewController は非推奨です。その中には、 SLComposeViewControllerを介してツイートを投稿する同様の機能があります。

iOS6 の問題を解決するには、サポート対象に応じてオプションを選択する必要があります。

  • iOS6 以降をサポート: SLComposeViewController を使用するだけです。フレームワーク Social.framework をリンクして完了です。

  • iOS 5.x 以降のサポート: さらに作業が必要です。最初に SLComposeViewController が存在するかどうかを確認し (つまり、iOS 6.0 にいる)、それを使用して提示する必要があります。それ以外の場合は、古い iOS には TWTweetComposeViewController を使用します。また、フレームワーク Social.framework をオプションとしてリンクする必要があります。

補足として、iOS 6 のみをサポートしている場合は、同じコントローラーを使用して Facebook に無料で投稿できるので、Facebook 統合の使用も検討してください。

于 2012-09-20T08:19:51.660 に答える
3

TWTweetComposeViewController の代わりに、ソーシャル フレームワークに含まれている SLComposeViewController を使用します。

- (IBAction)SendTweet:(id)sender {
   if([SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook])
 {
    mySLComposerSheet = [SLComposeViewController         composeViewControllerForServiceType:SLServiceTypeTwitter];
    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@" THIS IS AN EXAMPLE",mySLComposerSheet.serviceType]];
    [mySLComposerSheet addImage:[UIImage imageNamed:@"image.png"]];
    [mySLComposerSheet addURL:[NSURL URLWithString:@"http://www.StackOverflow.com/"]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
  }
   [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
    NSLog(@"dfsdf");
    NSString *output;
    switch (result) {
        case SLComposeViewControllerResultCancelled:
            output = @"ACtionCancelled";
            break;
        case SLComposeViewControllerResultDone:
            output = @"Post Successfull";
            [self dismissViewControllerAnimated:YES completion:nil];
            break;
        default:
            break;
    }
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Twitter Message" message:output delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
    [alert show];
}];
}
于 2012-11-08T05:05:50.990 に答える