如何以编程方式解除FBWebDialogs - 我已经看过所有文档和堆栈溢出问题,似乎没有办法做到这一点?那可不可以?
答案 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];
它对我来说效果很好!