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

TWTweetComposeViewController 已被弃用,因为对于 iOS 6.0,有一个新的框架来处理所有社交交互,称为 Social.framework。在那里,您可以找到通过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

使用社交框架中包含的 SLComposeViewController 代替 TWTweetComposeViewController

- (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 回答