我的共享Xamarin项目中有一个带有WebView的ContentPage。
要在WebView中启用Android的后退按钮,我使用了以下代码:
protected override bool OnBackButtonPressed()
{
_myWebView.GoBack();
return true;
}
众所周知,iOS没有后退按钮。我想启用向左滑动以导航到上一个Webview页面。
最简单的方式或方法是什么?
答案 0 :(得分:1)
我建议为%
实现自定义渲染器,并将手势识别器附加到基础wildcard
。适用于iOS的This is how the WebViewRenderer
是在Xamarin Forms中实现的。
Xamarin表单WebView
实际上是iOS上的UIWebView
。因此,您可以在渲染器中使用以下答案实现Swift代码:https://stackoverflow.com/a/32012660/6192895。将此Swift代码转换为C#非常简单,但这也是一个潜在的解决方案:
基本解决方案
WebView
这个解决方案是相当基础的,它只是执行GoBack()操作,而不像普通的Safari浏览器那样实际显示页面的滑动。因此,如果您需要,可能需要添加更多代码。
<强>转换强>
您可以使用CoreAnimation。将此用作UIWebView
方法:
public class SwipeWebViewRenderer : WebViewRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
var view = NativeView as UIWebView;
var swipeBackRecognizer = new UISwipeGestureRecognizer(HandleSwipeBack);
swipeBackRecognizer.Direction = UISwipeGestureRecognizerDirection.Right;
view.AddGestureRecognizer(swipeBackRecognizer);
}
void HandleSwipeBack()
{
(Element as WebView).GoBack();
}
}
这不会让您获得与Safari浏览器完全相同的行为,因为如果您中途停止滑动,它将不会取消动画。可以这样做,但需要更多代码。
额外信息
您也可以从this Pull Request for a SwipeGestureRecognizer中汲取灵感,而这些灵感并未包含在Xamarin Forms中,因为缺少单元测试和UI测试。
不幸的是,默认的Xamarin Forms GestureRecognizers目前只限于Tap,Pinch和Pan。
答案 1 :(得分:0)
您可以尝试以下
NavigationPage.SetBackButtonTitle (this, "")
或者您可以添加工具栏项,然后尝试这样的
ToolbarItems.Add(new ToolbarItem("Back", "BackIcon.png", () => { _webview.GoBack(); }));