iOS开发:点击按钮时如何替换TextView中用户选中的文本?
UITextView选中内容替换实现方案
你已经获取到选中的文本范围range,直接调用UITextView遵守UITextInput协议提供的原生替换方法即可完成需求,完整按钮点击事件代码示例如下:
@IBAction func replaceButtonTapped(_ sender: UIButton) { // 校验选中范围是否存在 guard let selectedRange = textViewText.selectedTextRange else { return } // 替换为你需要的目标字符串 let targetStr = "指定的新字符串" // 执行替换操作 textViewText.replace(selectedRange, withText: targetStr) // 可选:替换完成后将光标移动到新内容末尾 if let newCursorPos = textViewText.position(from: selectedRange.start, offset: targetStr.count) { textViewText.selectedTextRange = textViewText.textRange(from: newCursorPos, to: newCursorPos) } }
补充说明
- 没有选中文本时,
selectedTextRange会返回当前光标位置,此时调用方法会直接在光标处插入指定字符串,符合常规编辑逻辑。 - 该方法会自动触发UITextView的文本变更回调,无需手动触发文本更新相关的代理方法。
- 如果需要替换后选中新插入的内容,只需修改光标设置逻辑,将选中结束位置设置为
newCursorPos即可。
内容的提问来源于stack exchange,提问作者alexsmith
相关产品推荐
相关产品推荐

