如何解雇FBWebDialogs

如何以编程方式解除FBWebDialogs – 我已经看过所有文档和堆栈溢出问题,似乎没有办法做到这一点? 那可不可以?

所以我发现了一种hacky方式,这个代码将以编程方式触发关闭按钮TouchUpInside,从而关闭对话框,就像有人手动按下关闭按钮一样 – 它通过循环浏览应用程序视图中的最后一个窗口hiearachy然后试图找到FBDialog的关键按钮 – 它可以在我的测试中工作,但可能不适用于所有人,这里是代码,但真的Facebook应该添加一个API调用来在他们的SDK中执行它。

UIWindow *window = [[UIApplication sharedApplication] keyWindow]; UIView *fbDialogWrapper = [window.subviews lastObject]; NSLog(@"Class: %@", [[fbDialogWrapper.subviews firstObject] class]); if ([[fbDialogWrapper.subviews firstObject] isKindOfClass:NSClassFromString(@"FBDialog")]) { for (UIView *view in ((UIView *)[fbDialogWrapper.subviews firstObject]).subviews) { if ([view isKindOfClass:[UIButton class]]) { UIButton *closeButton = (UIButton *)view; [closeButton sendActionsForControlEvents:UIControlEventTouchUpInside]; NSLog(@"Trigger facebook close"); break; } } } 

只需使用[self dismissModalViewControllerAnimated:YES]; 它对我有用!