【发布时间】:2020-02-07 20:36:05
【问题描述】:
所以我的 Xamarin Forms 应用程序中有一个 WebView,但我想通过创建自定义渲染器来更改我的 iOS WebView,如下所示:https://forums.xamarin.com/discussion/129626/how-does-one-implement-wkwebview-ios-in-a-cross-platform-application
我不确定如何更改我的 XAML 文件,以调用我的 iOS 自定义渲染器和 Android 的普通 WebView。目前我的 XAML 文件如下所示:
<WebView Source="{Binding StartUrl}"
Navigated="OnBrowserNavigated"
Navigating="OnBrowserNavigating"
AbsoluteLayout.LayoutFlags="All"
AbsoluteLayout.LayoutBounds="0.5, 0.5, 1, 1"/>
使用关键字 WebView (Xamarin.Forms.WebView)。但是如果我使用这种方法为 iOS 创建一个自定义渲染器:
// Create a new class:
public class MyWebView : WebView
{
public static readonly BindableProperty UrlProperty = BindableProperty.Create(...);
...
}
// Create custom renderer:
[assembly: ExportRenderer(typeof(MyWebView), typeof(MyWebViewRenderer))]
namespace WKWebViewDemo.iOS
{
...
}
我应该如何像页面所说的那样调用这个渲染器
<StackLayout>
<local:MyWebView Url="https://www.microsoft.com" VerticalOptions="FillAndExpand"/>
</StackLayout>
并且仍然像我的 XAML 页面现在正在调用 Android 的 Xamarin.Forms.WebView?
【问题讨论】:
-
如果 Android 上没有定义自定义渲染器,它将只使用基本渲染器
-
好的,所以如果我只使用“MyWebView”类,Xamarin 将在 android 应用程序中查找它,但由于它不存在,它会忽略它并使用 Xamarin.Forms.WebView?跨度>
-
它将寻找渲染器。如果 MyWebView 没有,它将查找基类 WebView 之一。
-
好的,所以我的 android webview 将使用 source=url,而 iOS 将使用 Url=url,就像您在问题中看到的那样,我会将它们都添加到我的 XAML 布局中吗?
-
不,那会是个问题。两个平台都需要具有相同的 API 界面。为什么你需要一个与基本控件不同的 url 属性?
标签: xamarin.forms