Ios 通过应用程序发送推文而不使用iPhone中的推文表

Ios 通过应用程序发送推文而不使用iPhone中的推文表,ios,twitter,social-networking,Ios,Twitter,Social Networking,如果我使用tweetcomposeviewcontroller或twitter的社交框架,则会显示用于发布tweet的默认tweet表。我不想让tweetsheet对话框弹出,我想在不使用它的情况下发送tweet。我该怎么做呢?你可以用这个技巧。我在我的项目中做到了这一点,我把这个方法放在下面,希望对你有所帮助 -(void)TwitteFromShareBtnApear { Class TWTweetComposeViewControllerClass = NSClassFr

如果我使用tweetcomposeviewcontroller或twitter的社交框架,则会显示用于发布tweet的默认tweet表。我不想让tweetsheet对话框弹出,我想在不使用它的情况下发送tweet。我该怎么做呢?

你可以用这个技巧。我在我的项目中做到了这一点,我把这个方法放在下面,希望对你有所帮助

-(void)TwitteFromShareBtnApear
{

        Class TWTweetComposeViewControllerClass = NSClassFromString(@"TWTweetComposeViewController");

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



                [twitter setInitialText:@"twitter text"];

               [twitter addImage:[UIImage imageNamed:@"icon.png"]];
                [twitter addURL:[NSURL URLWithString:self.strsmallUrl]];
            [self findSubViewofTwitter:twitter.view];
            [self presentViewController:twitter animated:YES completion:nil];

                twitter.completionHandler = ^(TWTweetComposeViewControllerResult res) {

                    if(res == TWTweetComposeViewControllerResultDone)
                    {

                     //done alert


                    }
                    else if(res == TWTweetComposeViewControllerResultCancelled)
                    {
                    //cancel alert
                    }

                    [self dismissModalViewControllerAnimated:YES];

                };
            }
        }

}
- (void) findSubViewofTwitter:(UIView*)theView
{
    for (UIView * subview in theView.subviews)
    {
        subview.hidden=TRUE;

        if ([subview isKindOfClass:[UIButton class]])
        {
            UIButton *btn = (UIButton *)subview;

            if([btn.titleLabel.text isEqualToString:@"Send"])
            {
                [btn sendActionsForControlEvents:UIControlEventTouchUpInside];
            }
        }
        [self findSubViewofTwitter:subview];
    }
}
请看一看非常好的解释


试试这段代码…

效果很好…但还有一件事,我想发布一个url,而不是一条推特,所以它说“无法在推特上发布推特”,我想字符长度已经超过了。如果是这样的话,我怎么能以tweet的形式发布url呢?
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter];

        [accountStore requestAccessToAccountsWithType:accountType options:nil completion:^(BOOL granted, NSError *error){
            if (granted) {

                NSArray *accounts = [accountStore accountsWithAccountType:accountType];
                twitterAccount = [accounts objectAtIndex:0];
            }
        }];

        if ([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
        {
            SLComposeViewController *tweetSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
            [tweetSheet setInitialText:@"tweeting from my own app! :)"];
            [tweetSheet addURL:[NSURL URLWithString:@"www.web.com"]];
            [self presentViewController:tweetSheet animated:YES completion:nil];
        }
        else
        {
            UIAlertView *alertView = [[UIAlertView alloc]
                                      initWithTitle:@"Sorry"
                                      message:@"You can't send a tweet right now, make sure your device has an internet connection and you have at least one Twitter account setup"
                                      delegate:self
                                      cancelButtonTitle:@"OK"
                                      otherButtonTitles:nil];
            [alertView show];
        }