如何重置NSTextStorage中的属性

时间:2014-11-28 20:36:34

标签: ios objective-c regex nsattributedstring nstextstorage

我正在尝试iOS的文本解析器。我有一些粗体,斜体,突出显示等语法。我已在UITextView中设置了NSTextStorage实例来监控更改并设置正确的属性。如果我使用文本预加载UITextView,那么效果很好。

然而,当我打字时,让我说我输入类似的内容

==a==

效果很棒它突出黄色,一切都很好。但是,如果我将光标放在最后一个==旁边并开始输入以创建如下内容:

==a==hello my name is...

然后文本的其余部分也会突出显示。

我知道我使用的正则表达式不是问题,因为如果我预先用UITextView填充该文本,它会正确解析它。

问题:所以我需要帮助的是将当前光标位置重置为无文本属性。我不知道该怎么做,因为如果它在文本视图的末尾,我就无法继续前进,因为我得到了NSRangeException

谢谢!

1 个答案:

答案 0 :(得分:2)

我想出了这一点,您需要做的是delegate UITextView实施textViewDidChange:方法并设置typingAttributes

像这样:

- (void)textViewDidChange:(UITextView *)textView {
    textview.typingAttributes = @{...};
}

现在每次文本更新时,它都会重置为默认属性。