Question

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?

Était-ce utile?

La solution

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;
        }
    }
}

Autres conseils

Just use [self dismissModalViewControllerAnimated:YES]; it worked well for me!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top