You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS15下禁用WKWebView链接长按拖放功能无效的解决问询

解决WKWebView禁用链接长按拖放但保留ActionSheet的问题

有效方案:通过WKNavigationDelegate拦截拖放事件

针对iOS15及以上系统,可实现WKNavigationDelegate的指定方法,精准拦截链接的拖放操作,同时保留WKActionSheet的正常功能。

代码实现

首先给WKWebView设置代理:

webView.navigationDelegate = self

然后实现代理方法:

func webView(_ webView: WKWebView, performActionFor hitTestResult: WKHitTestResult, decisionHandler: @escaping (WKActionSheetDecision) -> Void) {
    // 仅拦截链接的拖放操作
    if hitTestResult.type == .link, hitTestResult.action == .drag {
        decisionHandler(.cancel)
    } else {
        // 允许其他所有操作(包括弹出ActionSheet)
        decisionHandler(.allow)
    }
}

原方法无效的原因

  • allowsLinkPreview = false:该属性仅用于禁用链接的预览弹窗,和拖放功能无关联,无法阻止拖放。
  • webkitTouchCallout='none':这个CSS属性只能禁用长按弹出的系统菜单(如复制、打开),但iOS15+的链接拖放是独立交互逻辑,不受该属性控制。

说明

此方案仅拦截链接的拖放行为,长按链接后依然能正常弹出包含“打开”“复制链接”等选项的WKActionSheet,完全匹配需求。

内容的提问来源于stack exchange,提问作者Rascal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 14:40:07