Как уволить 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];
это хорошо сработало для меня!