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

如何在iOS 11和iOS 12的WKWebView中禁用Drag & Drop功能?

如何在iOS 11/12的WKWebView中禁用长按图片/链接的Drag & Drop功能?

我之前做iOS项目时刚好碰到过这个问题——iOS 11和12的WKWebView里,长按图片或者链接总会触发Drag & Drop会话,用户能拖动这些元素,有时候会打乱产品的交互逻辑。下面分享两种亲测有效的解决方案,你可以根据自己的场景选择:

方法一:注入JavaScript精准禁用(推荐)

如果你的网页是自己可控的,或者可以通过WKWebView注入脚本,这种方法最靠谱,能精准针对图片和链接禁用拖拽,不会影响文本选择、长按复制等其他功能。

你可以在WKWebView加载完成后,注入这段JS代码:

// 阻止图片的拖拽事件
document.addEventListener('dragstart', function(e) {
    if (e.target.tagName.toLowerCase() === 'img') {
        e.preventDefault();
    }
}, false);

// 阻止链接的拖拽事件
document.addEventListener('dragstart', function(e) {
    if (e.target.tagName.toLowerCase() === 'a') {
        e.preventDefault();
    }
}, false);

在Native代码里,你可以在WKNavigationDelegate的webView(_:didFinishNavigation:)方法中执行注入:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    let disableDragJS = """
        document.addEventListener('dragstart', function(e) {
            if (e.target.tagName.toLowerCase() === 'img' || e.target.tagName.toLowerCase() === 'a') {
                e.preventDefault();
            }
        }, false);
        """
    webView.evaluateJavaScript(disableDragJS) { _, error in
        if let error = error {
            print("注入JS失败:\(error.localizedDescription)")
        }
    }
}

如果想更彻底,直接禁用所有元素的拖拽,也可以把代码简化成:

document.addEventListener('dragstart', function(e) {
    e.preventDefault();
}, false);

方法二:Native端拦截系统长按手势(适合不可控网页)

如果网页不是你维护的,没法修改或注入JS,可以试试通过Native代码禁用WKWebView的系统长按手势——不过要注意,这种方法会同时禁用所有依赖长按的功能,比如文本选择、链接预览等,需要权衡使用。

你可以创建一个WKWebView的子类,重写addGestureRecognizer(_:)方法,拦截系统的长按手势:

class NoDragWKWebView: WKWebView {
    override func addGestureRecognizer(_ gestureRecognizer: UIGestureRecognizer) {
        // 识别并禁用系统的长按手势
        if let longPress = gestureRecognizer as? UILongPressGestureRecognizer {
            longPress.isEnabled = false
        }
        super.addGestureRecognizer(gestureRecognizer)
    }
}

之后直接使用这个子类代替原生的WKWebView即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:52:42