Twitter completionHandler成功冻结应用程序

时间:2011-12-02 20:14:33

标签: ios twitter ios5

来自TWTweetComposeViewController的完整推文后,我的应用锁定了。走出主屏幕并回来似乎解决了这个问题,时钟仍然响起,但没有触摸注册到我的任何视图/控件。

我的应用程序中必须发现一些奇怪的事情,我制作了一个新的实用程序 - 应用程序 - 模板项目,并将其链接到Twitter.framework,并重新定义了信息UIButton的{​​{1}}方法:

IBAction

取消后(有趣地需要2次点击),可以通过点击“i”将其恢复,但提交后,“i”在响应应用程序之前无响应。

有没有人成功使用过这个?还是我公然遗失了什么?

2 个答案:

答案 0 :(得分:24)

这里的问题是你提出了一个模态视图控制器(twitter视图控制器是模态的);但是,您的完成处理程序在完成时不会解除模态视图控制器。这使得Twitter控制器可以捕获屏幕上的所有触摸,从而阻止您的应用正常运行。

您需要确保添加[self dismissModalViewControllerAnimated:YES];到你的完成处理程序。

这样的事情:

(IBAction)showInfo:(id)sender 
{   
    TWTweetComposeViewController *twt = [[TWTweetComposeViewController alloc] init];
    [twt setInitialText:@"some garbage"];
    [twt addURL:[NSURL URLWithString:@"http://google.com"]];
    twt.completionHandler = ^(TWTweetComposeViewControllerResult result) { 
      switch (result) {
        case TWTweetComposeViewControllerResultCancelled:                    
           break;

        case TWTweetComposeViewControllerResultDone:
           break;

        default:
           break;
      }
      [self dismissModalViewControllerAnimated:YES];
    };

    [self presentModalViewController:twt animated:YES];

};

答案 1 :(得分:0)

completionHandler中,发布twt

twt.completionHandler = ^(TWTweetComposeViewControllerResult r) {
    NSLog(@"it happened: %d",r);
    [twt release]; // Unless using ARC
};

应用程序没有冻结,但TWTweetComposeView仍然存在,捕获所有触摸。