Как уволить FBWebDialogs

Как я могу отклонить FBWebDialogs программным путем - я просмотрел всю документацию и вопросы переполнения стека, и, кажется, нет никакого способа сделать это? Этого не может быть?

2 ответа

Решение

Таким образом, я нашел какой-то хакерский способ сделать это, этот код будет программно вызывать кнопку закрытия TouchUpInside, закрывая диалог, как будто кто-то вручную нажал кнопку закрытия - он работает, просматривая последнее окно в иерархии представления приложения, а затем Попытка найти кнопку закрытия 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]; это хорошо сработало для меня!

Другие вопросы по тегам