用属性文本替换文本并向其添加操作
Posted
技术标签:
【中文标题】用属性文本替换文本并向其添加操作【英文标题】:Replace text with attributed text and add action to it 【发布时间】:2017-05-23 17:52:23 【问题描述】:我有字符串数组[apple,mango,banana,kiwi,orange]
当用户在 textview 上键入时,如果最后一个单词与数组中的任何单词匹配,则它应该加下划线并添加轻击手势。
我正在使用
func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool
let lastword = textviewtext.lastword()//i have last word i have to replace
if myarray.contains(lastword)
//here code for replacing the text and underline it and add tap gesture
如何做到这一点 示例 - 用户如果输入 - “orange apple are good for health” 这里橙子和苹果应该加下划线,并且应该通过一些操作启用点击。比如带有“orange”的警报轻拍”或“苹果轻拍”
【问题讨论】:
【参考方案1】:要为某些单词添加下划线,您需要使用rangeOfString
在文本视图中获取该单词的 NSRange 并创建一个新的属性字符串以应用于文本视图。这是一个例子:
let at = NSMutableAttributedString(string: textView.text)
words.forEach word in
if let range = textView.text.range(of: word)
at.addAttribute(NSUnderlineColorAttributeName, value: UIColor.red, range: range)
textView.attributedText = at
要识别何时点击了单词,请参阅this answer。
【讨论】:
如何在用户输入文本时执行此操作 @AkashShindhe,您可以将此代码放入您已有的方法中 它不起作用 - 无法将类型“Range以上是关于用属性文本替换文本并向其添加操作的主要内容,如果未能解决你的问题,请参考以下文章