【问题标题】:Disable WKActionSheet on WKWebView在 WKWebView 上禁用 WKActionSheet
【发布时间】:2014-12-15 03:02:15
【问题描述】:

我正在将 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];

【问题讨论】:

  • 你在你的“编辑”中说你已经解决了。知道如何会很有趣,这对我来说并不清楚。有什么提示吗?
  • 抱歉描述不好,但不确定到底发生了什么。
  • @DanielÅkesson 您能否为如何为带有关联自定义操作表的 wkwebview 呈现自定义超链接处理程序提供答案?我很想弄清楚并支持答案。
  • javascript 注入在以后的版本中对我有用。我更新了解决方案

标签: uiactionsheet wkwebview


【解决方案1】:

这是 Swift 3.0 中的解决方案:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
     webView.evaluateJavaScript("document.body.style.webkitTouchCallout='none';")
}

【讨论】:

    【解决方案2】:
    myWkWebView.allowsLinkPreview = false
    

    【讨论】:

    • 正是我所寻找的!谢谢!在 iOS 13 中,WKWebView 中的图像可以以 3D 触摸预览的方式进行预览,但即使在不支持 3D 触摸的设备上也是如此。只需长按即可。
    • 这太完美了!它就像我想要的那样工作。 +1
    【解决方案3】:

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

    -webkit-touch-callout: none;
    

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多