Facebook帖子后没有触发的SLComposeViewController完成处理程序(虽然可以取消取消)

时间:2015-08-18 08:36:56

标签: ios objective-c facebook slcomposeviewcontroller

我遇到了一个非常特殊的问题,到目前为止它只发生在一个设备上(恰好是项目经理)。

我正在使用SLComposeViewController发布到用户的Facebook墙或用户的Twitter Feed。 Twitter版本按预期完美运行,Facebook除了这一个设备外,每个人都能很好地工作。

问题是,如果用户点击“Post”,那么SLComposeViewController的完成处理程序永远不会被触发,因此仍然捕获所有用户的手势,因此UI似乎已被锁定。视图本身实际上已消失,但视图控制器永远不会被解雇。如果用户点击“取消”,则不会发生此行为。

为了测试我在显示Facebook表单后的5秒钟内尝试调用“dismissViewController”,这完全解除了视图控制器,所以问题肯定是在按下帖子后它永远不会被解雇。

我的代码:

- (void) presentFacebookSheet {

    self.faceSheet = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeFacebook];

    __weak typeof(self) weakSelf = self;
    [[AlertManager defaultManager] alertFacebookPostForCallback:^{

        weakSelf.faceSheet.completionHandler = ^(SLComposeViewControllerResult result) {
            switch (result) {
                case SLComposeViewControllerResultCancelled:
                    NSLog(@"CANCELLED!!");
                    break;

                case SLComposeViewControllerResultDone:
                    NSLog(@"DONE!!");
                    break;

                default:
                    break;
            }
            dispatch_async(dispatch_get_main_queue(), ^{
                [weakSelf dismissViewControllerAnimated:YES completion:^{
                    NSLog(@"Face Sheet has been dismissed.");
                }];
            });
        };

        if(!(weakSelf.faceSheet == nil)) {
            [weakSelf presentViewController:weakSelf.faceSheet animated:YES completion:nil];
        }
    }];


}

请记住,此代码实际上适用于除此之外的所有其他用户,因此我认为他的Facebook设置可能会阻止“post”方法触发完成处理程序?我已经广泛搜索了答案,但迄今为止一无所获。

提前致谢。

1 个答案:

答案 0 :(得分:0)

所以我设法找出了这个令人难以置信的令人沮丧的问题的答案。问题在于Facebook应用程序的特定版本导致Apple的SLComposeViewController无法返回完成处理程序并陷入该特定状态。

我最终偶然发现了这个链接:https://developers.facebook.com/bugs/962985360399542/?search_id,它引导我回答。

更新用户设备上的Facebook应用程序解决了这个问题。