我试图在应用程序的iOS WKWebView中单击它时在safari浏览器中打开一个URL,但是当我从javascript调用window.open()时没有任何效果 .
它没有达到WKWebView的决定政策,
[Foundation.Export("webViewecidePolicyForNavigationActionecisionHandler:")]
public void DecidePolicy(WKWebView webView, WKNavigationAction navigationAction, Action<WKNavigationActionPolicy> decisionHandler)
我试图覆盖WKUIDelegate方法,但它不起作用 . :(
任何人都可以帮我吗?
2 回答
注意 - 我没有xamarin经验,但我知道“window.open()”js如何在WKWebView中使用本机代码,所以我希望这个答案可以帮助你连接丢失的点 .
首先,在您配置Web视图的位置设置UIDelegate ..(在您的案例中为viewDidLoad)
其次,实现UIDelegate的这种协议方法 . 我们的想法是即时创建一个Web视图和一个视图控制器,然后呈现/推送它并将此Web视图实例返回给WebKit,以便它可以与父Web视图 Build 链接并加载url(窗口的第一个参数) . 公开电话) .
由于方法
DecidePolicy
包含在IWKNavigationDelegate
中,因此您应该实现它WKUIDelegate
.Export
内的方法字符串不完整,应为[Export("webView:decidePolicyForNavigationAction:decisionHandler:")]
有两种方法可以实现委托 .
Strong Delegate:
Weak Delegate: