How can I dismiss an FBWebDialogs programmatically - I have seen through all the documentation and stack overflow questions, and there seems to be no way to do this? That can't be?
Asked
Active
Viewed 270 times
2 Answers
2
So I found a kind of hacky way to do it, this code will programmatically trigger the close button TouchUpInside thus closing the dialog as if someone had manually pressed the close button - it works by looping through the last window in the app's view hiearachy and then trying to locate the FBDialog's closebutton - it works in my test, but might not work for everyone, here's the code, but really facebook should add an API call to do it in their 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;
}
}
}

user2210889
- 123
- 2
- 8
2
Just use [self dismissModalViewControllerAnimated:YES];
it worked well for me!

Patrick Q
- 6,373
- 2
- 25
- 34

user3748749
- 21
- 2