Xamarin SFSafariViewController DidFinish не вызывается

Я пытаюсь использовать SFSafariViewController, и это работает просто gr8. Браузер открывает и загружает мой сайт. Проблема в том, что я не могу поймать событие, когда пользователь нажимает кнопку "Готово". Я реализую ISFSafariViewControllerDelegate и экспортирую метод DidFinish, как подсказывает API. Вот пример кода.

Этот метод вызывается из ViewModel.

public async Task LaunchSafariWebViewAsync(string url, Action action)
{
    var destination = new NSUrl(url);
    var sfViewController = new SFSafariViewController(destination);

    var window = UIApplication.SharedApplication.KeyWindow;
    var controller = window.RootViewController;
    await controller.PresentViewControllerAsync(sfViewController, true);

    //Note that I'm able to invoke method manualy with this call
    SFSafariViewControllerDelegate_Extensions.DidFinish(this, sfViewController);

}

И затем здесь я экспортирую метод, который я хочу вызвать, когда пользователь закрывает представление.

[Foundation.Export("safariViewControllerDidFinish:")]
public void DidFinish(SFSafariViewController controller)
{
    var temp = "test";
}

Как я отмечал в комментарии, когда я использую SFSafariViewControllerDelegate_Extensions, я могу вызвать метод вручную, поэтому я предполагаю, что он экспортируется правильно. Но он не вызывается, когда я нажимаю кнопку "Готово".

Любые предложения, почему это должно быть?

1 ответ

Решение

Из вашего кода похоже, что вы не установили делегата.

Если вы реализуете метод DidFinish в этой модели представления добавьте код после инициализации контроллера SFSafariViewController:

public async Task LaunchSafariWebViewAsync(string url, Action action)
{
    var destination = new NSUrl(url);
    var sfViewController = new SFSafariViewController(destination);

    sfViewController.weakDelegate=this;

    var window = UIApplication.SharedApplication.KeyWindow;
    var controller = window.RootViewController;
    await controller.PresentViewControllerAsync(sfViewController, true);
}
Другие вопросы по тегам