Iphone 是否有一种通过SLComposer ViewController回复特定推文的方法
是否可以使用SLComposer ViewController回复推文?以前有人这样做过吗?由于SLComposeViewController继承自View控件,我们需要将SLComposeViewController剥离到它的UITextView属性并获取其内容。然后,我们将收集到的信息与回复状态id中的Iphone 是否有一种通过SLComposer ViewController回复特定推文的方法,iphone,twitter,Iphone,Twitter,是否可以使用SLComposer ViewController回复推文?以前有人这样做过吗?由于SLComposeViewController继承自View控件,我们需要将SLComposeViewController剥离到它的UITextView属性并获取其内容。然后,我们将收集到的信息与回复状态id中的”一起传递到Twitter API。轻松的微风!!让我知道你是否需要代码方面的帮助!我还没有实施它。。但既然我能够从SLComposer ViewController中检索用户输入,我想剩下的
”一起传递到Twitter API。轻松的微风!!让我知道你是否需要代码方面的帮助!我还没有实施它。。但既然我能够从SLComposer ViewController中检索用户输入,我想剩下的部分将是小菜一碟。首先,我们需要在每次点击回复按钮时生成一个SLComposeViewController。一旦启动了SLComposeViewController,我们将深入研究它,搜索“发送”按钮并禁用名为sendbutntapted:
的关联操作。剥离本机操作后,我们将自己的自定义操作关联到sendButton
下面是执行此操作的代码:
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
userTypedTweet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[userTypedTweet setInitialText:[NSString stringWithFormat:@"%@",authorName]];
sendButton = [self tweetSendButton:userTypedTweet.view];
NSLog(@"%@",sendButton);
NSArray * actions = [sendButton actionsForTarget:userTypedTweet forControlEvent:UIControlEventTouchUpInside];
for (NSString * action in actions)
if([action isEqualToString:@"sendButtonTapped:"])
[sendButton removeTarget:userTypedTweet action:NSSelectorFromString(action) forControlEvents:UIControlEventTouchUpInside];
[sendButton addTarget:self action:@selector(replyToTheTweet) forControlEvents:UIControlEventTouchUpInside];
[self presentViewController:userTypedTweet animated:YES completion:^{}];
}
现在在我们的自定义操作中(在我的例子中是replyToTweet):我们提取用户输入的注释。然后将所有这些内容传递到twitterapi。推特会处理剩下的事情
-(void)replyToTheTweet
{
SingletonClass *myAccount= [SingletonClass sharedobject];
UITextView * textView = [self tweetTextView:self.userTypedTweet.view];
NSLog(@"we have the value :%@",textView.text);
NSMutableDictionary *parameters = [[NSMutableDictionary alloc] init];
[parameters setObject:[myAccount.currentTweet objectForKey:@"id_str"] forKey:@"in_reply_to_status_id"];
[parameters setObject:textView.text forKey:@"status"];
SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/update.json"] parameters:parameters];
NSLog(@"%@",request.parameters);
[request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
if (responseData)
{
NSError *parseError = nil;
id json = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:&parseError];
if (!json)
NSLog(@"Parse Error: %@", parseError);
else
{
UIAlertView *alertOK = [[UIAlertView alloc] initWithTitle:@"Successful" message:@"Tweet was succesfully replied to" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
dispatch_async(dispatch_get_main_queue(), ^{[alertOK show];});
}
}
else
{
NSLog(@"Request Error: %@", [error localizedDescription]);
}
}];
[self.userTypedTweet dismissViewControllerAnimated:YES completion:nil];
}
剥离UiTextView的代码为:
- (UITextView *)tweetTextView:(UIView *)view
{
for (UIView * subview in view.subviews)
{
if ([subview isMemberOfClass:[UITextView class]])
return (UITextView *)subview;
UITextView * textView = [self tweetTextView:subview];
if (textView) return textView;
}
return nil;
}
小鬼:记得把SLComposeViewController的UIButton也剥掉 您应该可以使用SLRequest
来完成此操作。我会读的谢谢Desdenova!!我成功了,没问题。如果您能告诉我们您是如何做的,并将其标记为有效答案,将非常适合将来参考。composeView.subviews为空。我看不到按钮视图,知道吗?