4

如何像 iPhone 内置的照片应用程序那样将图片附加到Twitter帖子?如果任何机构有一些示例代码,那将是一个很大的帮助。谢谢。

4

4 回答 4

5

其他答案是建议TWTweetComposeViewController,但是如果你可以避免使用这个类,你应该这样做,它现在在 iOS 6 中已被弃用,

请在此处查看:TWTweetComposeViewController 在 IOS6 中已弃用

并且来自 Apple 自己,WWDC 2012,第 306 次会议演示文稿 PDF

推特框架

• Twitter 框架已弃用

• 不要使用 TWTweetComposeViewController

现在要使用 Twitter,你应该使用框架的SLComposeViewControllerSocial,它的用法几乎与TWTweetComposeViewController.

您可能需要支持 iOS 5,在这种情况下,您别无选择,只能使用TWTweetComposeViewController该类,但您应该努力检查SLComposeViewController并使用它(如果可用),因为这将在短期内为您节省时间和精力将来,当对 iOS 5 的支持被取消时,TWTweetComposeViewController该类真的可能会消失。如果您现在为了简单起见而依赖 Twitter 框架,因为它确实适用于 iOS 5 和 6,那么您是目光短浅的,稍后您遇到问题,只需多几行代码就可以了,这意味着您赢了无需担心未来的 iOS SDK 版本。

您应该导入Twitter.frameworkSocial.framework,将它们都标记为可选导入(不是必需的)。

示例代码:

UIImage *myImage = [...]; // an image

if( NSClassFromString(@"SLComposeViewController") ){
    // We have the Social framework in our iOS system
    // iOS 6 and later will use this

    if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]){
        SLComposeViewController *twitterCompose = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];

        [twitterCompose addImage:myImage]; // Adding your UIImage

        twitterCompose.completionHandler = ^(SLComposeViewControllerResult result){
            // Handle result, dismiss view controller
            [self dismissViewControllerAnimated:YES 
                                     completion:nil];
        };

        [self presentViewController:twitterCompose
                           animated:YES
                         completion:nil];
    }else{
        // the user does not have Twitter set up
    }
}else if( NSClassFromString(@"TWTweetComposeViewController") ){
    // We don't have the Social framework, work with the Twitter framework
    // iOS 5 only will use this

    if( [TWTweetComposeViewController canSendTweet] ){
        TWTweetComposeViewController *twitterCompose = [[TWTweetComposeViewController alloc] init];

        [twitterCompose addImage:myImage];

        twitterCompose.completionHandler = ^(TWTweetComposeViewControllerResult result){
            // Handle result, dismiss view controller
            [self dismissViewControllerAnimated:YES 
                                     completion:nil];
        };
        [self presentViewController:twitterCompose
                           animated:YES
                         completion:nil];
    }else{
        // the user hasn't go Twitter set up on their device.
    }
}else{
    // Wow you're going retro with this app, 
    // you must be on iOS 4 if you ever get here...
}
于 2012-10-16T05:05:33.033 回答
0

这里我如何使用它:

        NSLog(@"Ready to Tweet."); 
        TWTweetComposeViewController *tweetComposer = [[TWTweetComposeViewController alloc] init];
        [tweetComposer setInitialText:[NSString stringWithFormat:@"My message"]];
        [tweetComposer addImage:[UIImage imageNamed:@"114x114"]];
        [tweetComposer addURL:[NSURL URLWithString:@"http://myPage"]];
        tweetComposer.completionHandler = ^(TWTweetComposeViewControllerResult result){
        if(result == TWTweetComposeViewControllerResultDone){
            NSLog(@"Tweeted.");

        } else if(result == TWTweetComposeViewControllerResultCancelled) {
            NSLog(@"Cancelled.");
        }

        [self.navigationController dismissViewControllerAnimated:YES completion:nil];
        };
        [self presentModalViewController:tweetComposer animated:YES];
于 2012-10-16T04:52:04.297 回答
0

如果您使用的是 ios 5.0,那么您可以直接发布图片

添加框架 twitter.framework

导入 Twitter/TWTweetComposeViewController.h

-(void)postToTwittert
{
    Class TWTweetComposeViewControllerClass = NSClassFromString(@"TWTweetComposeViewController");

    if (TWTweetComposeViewControllerClass != nil) {
        if([TWTweetComposeViewControllerClass respondsToSelector:@selector(canSendTweet)]) {
            TWTweetComposeViewController *twitter = [[TWTweetComposeViewController alloc] init];

            [twitter setInitialText:@"text"];
            [twitter addImage:[UIImage imageNamed:@"imagename"]];
            [twitter addURL:[NSURL URLWithString:@"http://www.google.com"]];

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

            twitter.completionHandler = ^(TWTweetComposeViewControllerResult res) {

                if(res == TWTweetComposeViewControllerResultDone)
                {
                    NSLog(@"success for twitter post");

                }
                else if(res == TWTweetComposeViewControllerResultCancelled)
                {

                    UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Canceled" message:@"Your Tweet was not posted" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];

                    [alertView show];

                }

                [self dismissModalViewControllerAnimated:YES];

            };
        }
    }
}

在你想要推特帖子的地方调用这个函数

并进行您想要的适当更改..

好运..

于 2012-10-16T04:55:42.203 回答
0

我现在只是用来UIActivityViewController在 Twitter 上发帖。

UIActivityViewController *controller = [[UIActivityViewController alloc] initWithActivityItems:@[@"Default Text", [UIImage imageNamed:@"imageName"]] applicationActivities:nil];

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

这将呈现一个控制器,用户可以在其中决定做什么(发布到 Twitter、发布到 Facebook 等...)

然后它使用系统推文表等......来做到这一点。

您不必提供默认文本。这无论如何都可以被覆盖。

哦,同样,这不需要任何框架。

于 2012-10-16T16:03:44.910 回答