如何清除UITextView链接点击后的灰色选中框?
解决UITextView点击链接时清除灰色选中框的问题
我刚好也踩过这个坑,不用私有API完全能搞定!你找的方向完全没错——靠textView:shouldInteractWithURL:inRange:代理方法就能解决,补全代码就行:
完整实现代码
func textView(_ textView: UITextView, shouldInteractWith URL: URL, in characterRange: NSRange) -> Bool { // 核心操作:清空文本选中范围,直接移除灰色高亮框 textView.selectedRange = NSRange(location: 0, length: 0) // 要是你想自定义链接跳转逻辑(比如在App内打开而非跳Safari),可以加这段: // if UIApplication.shared.canOpenURL(URL) { // UIApplication.shared.open(URL) // return false // 返回false阻止系统默认处理 // } // 返回true让系统按默认逻辑处理链接跳转 return true }
原理说明
用户点击链接时,系统会自动选中对应的链接文本,这就是灰色选中框的来源。我们在代理方法里立刻把选中范围设为空,就能在链接交互触发前清除高亮状态,完全不影响链接的正常跳转。
注意事项
- 一定要给UITextView设置
delegate(可以在Storyboard里关联,或者代码里写textView.delegate = self),不然代理方法根本不会触发 - 如果自定义了链接处理逻辑,记得把
return true改成return false,防止系统重复处理跳转
内容的提问来源于stack exchange,提问作者R.Wonder
相关产品推荐
相关产品推荐

