当用户在单击链接时按下cmd键时,我正在尝试使WKWebView在新窗口/选项卡中打开链接,就像在任何浏览器中一样。我找不到原生 api 来这样做(或者我只是在谷歌搜索(。谁能告诉我如何在没有肮脏的黑客的情况下实现这一点?我错过了一个天真的 API 吗?
使用WKNavigationDelegate。
在导航过程中,
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;
将调用方法。WKNavigationAction 对象有一个modifierFlags属性,该属性告诉您在 clic 期间是否按下了 cmd 键。
如果是,那么做任何你想用新的WKWebView打开一个新窗口/标签,然后从这里开始加载页面(我个人发送一个事件,其中包含稍后将处理的所有信息(。
最后,通过调用取消您当前的 Web 视图导航
decisionHandler(WKNavigationActionPolicyCancel) ;