14

我正在更改我的应用程序以供 iOS6 和 iPhone 使用,我似乎无法弄清楚为什么当我使用新的社交框架从 Twitter 发帖时,我必须按两次“取消”才能关闭,其他人都有这个问题或修复?这是按钮的代码。

- (IBAction)twitterPost:(id)sender
{
if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter])
{
    mySLComposerSheet = [[SLComposeViewController alloc] init];
    mySLComposerSheet = [SLComposeViewController   composeViewControllerForServiceType:SLServiceTypeTwitter];
    [mySLComposerSheet setInitialText:[NSString stringWithFormat:@"This is my tweet, hello!",mySLComposerSheet.serviceType]];
    [self presentViewController:mySLComposerSheet animated:YES completion:nil];
}
[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
    NSLog(@"dfsdf");
    switch (result) {
        case SLComposeViewControllerResultCancelled:
            break;
        case SLComposeViewControllerResultDone:
            break;
        default:
            break;
    }
}];


}
4

5 回答 5

18

如果您使用 mySLComposerSheet 这很好用...

[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
于 2012-09-29T08:12:05.040 回答
9

我对 SLComposeViewController 的经验是 twitter 和 weibo 控制器需要手动关闭,而 facebook 控制器似乎表现更好。

如果我自己不关闭 ViewControllerAnimated,点击“发送”按钮将发送推文或微博帖子,但我会留下一个似乎是我自己视图的不可见视图。因此,我无法再与我的应用程序交互。

我不知道为什么我的应用程序会这样工作......有趣的是,用于取消的 completionHandler 只被调用一次。第二次点击关闭视图控制器。

+ (void) shareText:(NSString*)text image:(UIImage*)image social:(NSString*)service url:(NSString*)url
{
    SLComposeViewController*    controller = [SLComposeViewController composeViewControllerForServiceType:service];

    [controller setInitialText:text];
    [controller addImage:image];
    [controller addURL:[NSURL URLWithString:url]];

    controller.completionHandler = ^(SLComposeViewControllerResult result) {
        if( SLComposeViewControllerResultDone == result )
        {
            NSLog(@"rewards for share: %@!", service );
        }
        if( ![SLServiceTypeFacebook isEqualToString:service] )  // facebook behaves
            [[CBLAppDelegate instance].activeViewController dismissViewControllerAnimated:true completion:nil];
    };
    [[CBLAppDelegate instance].activeViewController presentViewController:controller animated:true completion:nil];
}
于 2012-11-11T06:46:04.670 回答
7

发现问题。它仅在将完成处理程序添加到 TWTweetComposeViewController 时发生。如果添加,请确保调用:

[自我dismissModalViewControllerAnimated:是];

于 2012-09-28T21:53:36.367 回答
3

试试这个朋友

   [mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {

        switch (result) {
            case SLComposeViewControllerResultCancelled:
                [self performSelector:@selector(showalert)];
                [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
                break;
            case SLComposeViewControllerResultDone:
                [self performSelector:@selector(showalert1)];
                [mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];
                break;

            default:
                break;


        }
    }];
于 2013-02-05T13:20:13.217 回答
1

在上面发表评论作为答案:

您是否尝试过在呈现视图控制器之前设置完成处理程序?

于 2012-09-27T11:16:02.990 回答