如何解雇FBWebDialogs

时间:2014-02-12 22:22:03

标签: ios facebook facebook-ios-sdk

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

2 个答案:

答案 0 :(得分:2)

所以我发现了一种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;
        }
    }
}

答案 1 :(得分:2)

使用[self dismissModalViewControllerAnimated:YES];它对我来说效果很好!