14

我正在将 iOS 应用程序从 UIWebView 迁移到 WKWebView。到目前为止一切顺利......在以前的应用程序中,我禁用了长按并实现了自定义长按(对链接进行自定义处理),但是我无法在 WKWebView 中使用它

我尝试了以下方法:

- (void)webView:(WKWebView *)wkWebView didFinishNavigation:(WKNavigation *)navigation {
    [wkWebView evaluateJavaScript:@"document.body.style.webkitTouchCallout='none';" completionHandler:nil];
}

我已经检查并执行了该行,调用的响应是 @"None"

但它的响应是: 警告:尝试呈现不在窗口层次结构中的视图!

有任何想法吗? 解决方案: 将 javascript 注入 wkwebview 现在可以工作了!

[self.wkWebView evaluateJavaScript:@"document.body.style.webkitTouchCallout='none';" completionHandler:nil];
4

3 回答 3

16

这是 Swift 3.0 中的解决方案:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
     webView.evaluateJavaScript("document.body.style.webkitTouchCallout='none';")
}
于 2017-09-30T19:59:03.563 回答
11
myWkWebView.allowsLinkPreview = false
于 2019-12-19T20:09:46.583 回答
3

我还没有验证它,但看起来你也可以使用 CSS 来禁用这个功能:

-webkit-touch-callout: none;

来源:https ://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-touch-callout

于 2018-04-17T18:32:23.590 回答