将文本替换为属性文本并向其添加操作

时间:2017-05-23 17:52:23

标签: swift uitextview uitextviewdelegate

我有字符串数组[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 
    }

如何做到这一点 exapmle - 用户如果键入 - “橙色 苹果对健康有益”这里橙色和苹果应加下划线并且应该通过某些操作启用点击。例如警告“橙色点击“或”苹果窃听“

1 个答案:

答案 0 :(得分: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