NSAttributedString当前键入的文本

时间:2016-08-17 06:03:15

标签: ios swift nsattributedstring

我目前正在制作类似Facebook的标记视图,即用户在@name中输入,并且视图正在过滤与@name匹配的人的姓名。当用户点击该视图中的名称时,当前键入的单词(在本例中为@name)将替换为已点击用户的名称。例如,假设我输入@joh我将收到“John Doe”的建议,我将继续点击。现在@joh被John Doe取代。这很好。

但是,我还想使用NSAttributedString使“John Doe”成为不同的背景颜色,我也有代码来执行此操作。然而,我遇到的问题是用户可能没有完成输入,并且在添加NSBackgroundAttribute后输入的每个字符都会导致所有以下文本接收相同的背景颜色。

我已经检查了我的范围,当我添加NSAttribute时,它被设置为,在这个例子中与John Doe一起开始:0和结束:8,但即便如此,我仍然得到字符的背景颜色在8以上的位置。我在这里缺少什么?

代码

        let tappedUserName = user.name
        let myRange = (textView.text as NSString).rangeOfString(tappedUserName)
        let attribute = [NSBackgroundColorAttributeName: UIColor.blueColor()]
        let myString = NSMutableAttributedString(string: textView.text)

        myString.setAttributes(attribute, range: myRange)

        textView.attributedText = myString

执行此代码后,我继续输入UITextView的后续字符将具有相同的背景颜色。

0 个答案:

没有答案