0

我为 iOS 6 编译并运行了这段代码。

SLComposeViewController *control = [SLComposeViewController composeViewControllerForServiceType:...];
[control setInitialText:...];
[control addURL:...];
[control setCompletionHandler:^(SLComposeViewControllerResult result) {
    [self dismissViewControllerAnimated:YES completion:^{
        // do something
    }];
}];
[self presentViewController:control animated:YES completion:nil];

如果将其用作 Twitter 控件,则可以正常工作,但如果将其用作 Facebook 控件,则不会调用 dismissViewController 的完成块,永远!!!(doSomething 部分永远不会运行)。

我认为这可能与控制器不在主线程上被解除有关,所以我将其更改为

dispatch_async(dispatch_get_main_queue(), ^{
        [self dismissViewControllerAnimated:YES completion:^{
             // do stuff... 
         }];
});

没有成功。

这是 iOS 6 的错误吗?我该如何解决?

4

1 回答 1

0

这是解决方案:

[self dismissViewControllerAnimated:YES completion:nil];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.6 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
    // do stuff
});

这可能是与dismissViewController API 相关的iOS 6 错误。

编辑:我创建了一个更强大的解决方案并在此处发布

于 2012-11-26T07:01:03.750 回答