我正在尝试为iOS编写文本解析器。我有一些用于粗体、斜体、突出显示等的语法。我在UITextView中设置了一个带有NSTextStorage实例的语法,以监视更改并设置正确的属性。如果我用文本预加载UITextView,它会工作得很好。
然而,当我打字的时候,假设我输入了这样的东西
==a==它工作得很好,突出显示它是黄色的,一切都很好。但是,如果我将光标放在最后一个==旁边,然后开始键入以创建如下所示:
==a==hello my name is...然后文本的其余部分也会被高亮显示。
我知道我使用的正则表达式不是问题,因为如果我用文本预先填充UITextView,它就会正确地解析它。
问题:,所以我需要帮助的是将当前光标位置重置为无文本属性。我不知道如何做到这一点,因为如果它在文本视图的末尾,我就不能前进,因为我会得到一个NSRangeException。
谢谢!
发布于 2014-11-28 20:57:51
我知道了,您要做的是在delegate for UITextView中实现textViewDidChange:方法并设置typingAttributes。
如下所示:
- (void)textViewDidChange:(UITextView *)textView {
textview.typingAttributes = @{...};
}现在,每次文本更新时,它都会重置为默认属性。
https://stackoverflow.com/questions/27195582
复制相似问题