我正在尝试iOS的文本解析器。我有一些粗体,斜体,突出显示等语法。我已在UITextView
中设置了NSTextStorage
实例来监控更改并设置正确的属性。如果我使用文本预加载UITextView
,那么效果很好。
然而,当我打字时,让我说我输入类似的内容
==a==
效果很棒它突出黄色,一切都很好。但是,如果我将光标放在最后一个==
旁边并开始输入以创建如下内容:
==a==hello my name is...
然后文本的其余部分也会突出显示。
我知道我使用的正则表达式不是问题,因为如果我预先用UITextView
填充该文本,它会正确解析它。
问题:所以我需要帮助的是将当前光标位置重置为无文本属性。我不知道该怎么做,因为如果它在文本视图的末尾,我就无法继续前进,因为我得到了NSRangeException
。
谢谢!
答案 0 :(得分:2)
我想出了这一点,您需要做的是delegate
UITextView
实施textViewDidChange:
方法并设置typingAttributes
。
像这样:
- (void)textViewDidChange:(UITextView *)textView {
textview.typingAttributes = @{...};
}
现在每次文本更新时,它都会重置为默认属性。