我能在一个项目中同时使用它们吗?为了打开CreateWebView链接,我需要重写WKUIDelegate的CreateWebView方法:
public override WKWebView CreateWebView(WKWebView webView, WKWebViewConfiguration configuration, WKNavigationAction navigationAction, WKWindowFeatures windowFeatures)
{
var url = navigationAction.Request.Url;
if (navigationAction.TargetFrame == null)
{
webView.LoadRequest(navigationAction.Request);
}
return null;
}当我在演示中使用WKUIDelegate时,它会工作(打开目标_blank)。但在实际项目中,他们也使用了WKNavigationDelegate。而应用WKUIDelegate CreateWebView不起作用。
渲染器中的OnElementChange如下所示:
var config = new WKWebViewConfiguration { };
webView = new WKWebView(Frame, config);
// Set the delegate here
webView = new WKWebView(this.Frame, new WKWebViewConfiguration());
webView.ScrollView.ScrollEnabled = true;
webView.ScrollView.Bounces = true;
webView.NavigationDelegate = new DisplayLinkWebViewDelegate();
webView.UIDelegate = MyWkWebViewDelegate();
SetNativeControl(webView);发布于 2019-09-04 08:24:46
WKNavigationDelegate:它帮助您实现在web视图接受、加载和完成导航请求的过程中触发的自定义行为。
WKUIDelegate类提供了代表网页表示本机用户界面元素的方法。
这里的网页不是webview,而是加载在webview上的html。
正如我们在下面的图片中所看到的

WKUIDelegate中的方法都与JS相关联。
有关这两种协议的更多详细信息,您可以查看https://developer.apple.com/documentation/webkit/wkuidelegate?language=objc
和
https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc
如果您想在webview完成加载时执行某些操作,则可以在DidFinishNavigation中实现WKNavigationDelegate方法。
public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation)
{
if(!webView.IsLoading)
{
// do some thing you want
}
}https://stackoverflow.com/questions/57783180
复制相似问题