2016-04-21 2 views
0

У меня есть приложение Xamarin.Forms с HybridWebView и HybridWebViewRenderer в проекте Droid.Как сделать HybridWebView обратно при нажатии кнопки возврата устройства

Я пытаюсь перевести веб-интерфейс назад, когда нажата кнопка возврата устройства.

Это выглядит довольно просто, если я просто использовал Xamarin.Forms WebView на своей странице. Я бы просто сделал это вот так:

protected override bool OnBackButtonPressed() 
{ 
    _webView.GoBack(); 
    return true; 
} 

Но HybridWebView не имеет метода GoBack().

В моем проекте Droid единственное место, где у меня есть доступ к WebView, находится в HybridWebViewRenderer, но я не могу слушать событие OnBackButtonPressed здесь.

Кто-нибудь знает, как я могу сделать HybridWebView назад, когда нажата кнопка возврата устройства?

ответ

2

Вызов window.history.back(); с Javascript может быть грязным решением.

Кроме того, вызов метода визуализации из класса PCL не должен быть проблемой.

ЗКС Класс:

public class MyHybridWebView : HybridWebView 
{ 
    public event EventHandler<EventArgs> DoSomeNative; 

    public void CallNative() 
    { 
     DoSomeNative(this, EventArgs.Empty); 
    } 
} 

Отображатель:

public class MyHybridWebViewRenderer : HybridWebViewRenderer 
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<View> e) 
    { 
     base.OnElementChanged(e); 

     if (e.OldElement != null || Element == null) 
     { 
      return; 
     } 

     (e.NewElement as MyHybridWebView).DoSomeNative += (sender, args) => 
     { 
      //Do something 
     }; 
    } 
} 
+0

Спасибо Я был в состоянии использовать код при условии, чтобы захватить OnBackPressed в themain деятельности и обрабатывать его в сорвана в случае DoSomeNative обработчик. –

Смежные вопросы