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