Iphone 推特帖子iOS6';取消';按钮问题

Iphone 推特帖子iOS6';取消';按钮问题,iphone,ios,xcode,ios6,xcode4.5,Iphone,Ios,Xcode,Ios6,Xcode4.5,我正在为iOS6和iPhone的使用更改我的应用程序,我似乎不明白为什么当我使用新的社交框架从Twitter发帖时,我必须按两次“取消”才能关闭,其他人有这个问题或解决方案吗?这是按钮的代码 - (IBAction)twitterPost:(id)sender { if([SLComposeViewController isAvailableForServiceType:SLServiceTypeTwitter]) { mySLComposerSheet = [[SLComposeVie

我正在为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;
    }
}];


}

将以上评论作为回答:


在显示视图控制器之前,您是否尝试过设置completionHandler


发现了问题。只有将完成处理程序添加到tweetcomposeviewcontroller时,才会发生这种情况。如果添加,请确保拨打:


[自我解散Modalviewcontrolleranimated:是]

如果您使用mySLComposerSheet,这将非常有效

[mySLComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result) {
[mySLComposerSheet dismissViewControllerAnimated:YES completion:nil];

我使用SLComposeViewController的经验是,twitter和微博控制器需要手动解除,而facebook控制器似乎表现得更好

如果我不解除ViewControllerAnimated,点击“发送”按钮将发送推特或微博帖子,但我会在自己的视图上留下一个看不见的视图。因此,我无法再与我的应用程序交互

我不知道为什么我的应用程序会这样工作。。。有趣的是,cancel的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];
}
试试这个伙计

   [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;


        }
    }];

在展示视图控制器之前,您是否尝试过设置completionHandler?这就完成了,谢谢Alex。很好,我已经发布了评论作为答案(见下文)。干杯然后你需要记住不要为Facebook的SLComposeViewController这样做,它会自动关闭自己!rdar:12440972是的,忘了提那个了。@Steven,你能检查一下苹果今天是否已经解决了这个问题吗?最近他们修复了很多RDAR…我一直在尝试验证,但由于另一个问题,到目前为止运气不佳。您不能使用
mySLComposerSheet
,因为这发生在块代码内部。使用
self
而不是
mySLComposerSheet
。顺便说一句,谢谢你的提示:)DismissViewControlleranimated是必要的,如果你使用Twitter,但不是如果你使用Facebook-在那里它没有工作!完全一样。你有没有给苹果发一些错误报告?或者您有更好的解决方法吗?请使用
[自我解除视图控制器激活:是完成:无]而不是
[自我解除ModalViewController激活:是]