2016-04-21 139 views
0

我在Droid項目中使用了HybridWebView和HybridWebViewRenderer的Xamarin.Forms應用程序。如何在按下設備後退按鈕時使HybridWebView返回

我試圖按下設備的後退按鈕時使web瀏覽導航回來。

它看起來很簡單,如果我只是在我的頁面中使用Xamarin.Forms WebView。我只是這樣做...

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

但HybridWebView沒有GoBack()方法。

在我的Droid項目中,我有權訪問WebView的唯一位置是在HybridWebViewRenderer中,但我無法在此處偵聽OnBackButtonPressed事件。

任何人都知道如何在設備的後退按鈕被按下時使HybridWebView導航回來?

回答

2

從Javascript調用window.history.back();可能是一個骯髒的解決方案。

此外,從PCL類調用渲染器的方法應該不成問題。

的PCL類:

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

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

渲染:您所提供themain活動捕獲OnBackPressed並在DoSomeNative事件rended處理它

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

謝謝我能夠使用代碼處理程序。 –

相關問題