2016-04-21 104 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

谢谢我能够使用代码处理程序。 –

相关问题