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

iOS 17中如何拦截UITextView的链接点击?UITextItemInteraction已废弃

iOS 17 中 UITextView 拦截链接点击的实现方案

iOS 17 及后续版本中,原带UITextItemInteraction参数的shouldInteractWith代理方法已被废弃,可使用新增的代理方法完成链接点击拦截:

实现代码示例

class YourViewController: UIViewController, UITextViewDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let textView = UITextView(frame: view.bounds)
        textView.delegate = self
        textView.isEditable = false
        textView.text = "测试链接:https://example.com"
        view.addSubview(textView)
    }

    // iOS 17+ 专用的链接交互拦截代理方法
    func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange, options: [UITextItemInteractionOption : Any]?) -> Bool {
        print("拦截到链接:\(URL)")
        // 在这里添加自定义处理逻辑,比如跳转内部页面、展示弹窗等
        // 返回false禁止系统默认的链接打开行为(如跳转Safari)
        return false
    }
}

关键说明

  • 确保视图控制器遵循UITextViewDelegate协议,并给UITextView设置了delegate
  • options参数包含交互附加信息,比如是否是长按触发的预览(UITextItemInteractionOption.preview),无需额外处理时可忽略该参数
  • 返回true允许系统执行默认链接打开动作,返回false则完全拦截并交由自定义逻辑处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:33:18