我遇到了一个非常特殊的问题,到目前为止它只发生在一个设备上(恰好是项目经理)。
我正在使用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”方法触发完成处理程序?我已经广泛搜索了答案,但迄今为止一无所获。
提前致谢。
答案 0 :(得分:0)
所以我设法找出了这个令人难以置信的令人沮丧的问题的答案。问题在于Facebook应用程序的特定版本导致Apple的SLComposeViewController无法返回完成处理程序并陷入该特定状态。
我最终偶然发现了这个链接:https://developers.facebook.com/bugs/962985360399542/?search_id,它引导我回答。
更新用户设备上的Facebook应用程序解决了这个问题。