我有一个NSTextView
子类作为它的NSTextStorage
代表。我正在尝试做两件事:
- 以某些方式突出显示文本
- 评估文本,然后将答案附加到文本视图。
我在两种不同的方法中执行此操作,均由- (void)textStorageWillProcessEditing:(NSNotification *)notification
委托回调调用。
我可以很好地突出显示语法,但是在附加我的答案时,插入点会跳到行尾,我真的不知道为什么。我的评估方法如下所示:
NSString *result = ..;
NSRange lineRange = [[textStorage string] lineRangeForRange:[self selectedRange]];
NSString *line = [[textStorage string] substringWithRange:lineRange];
line = [self appendResult:result toLine:line]; // appends the answer
[textStorage replaceCharactersInRange:lineRange withString:line];
这样做会很好地附加我的结果,但问题是,如前所述,插入点会跳到末尾。
我试过了:
- 将上述调用包装在
[textStorage beginEditing]
和中-endEditing
。 - 在更改文本存储之前保存选择范围(即插入点),以便之后我可以重置它,但没有骰子。
我这样做对吗?我正在尝试以最简单的方式做到这一点,而且我也不确定这是否是进行解析/突出显示的理想场所。文档让我相信这一点,但也许这是错误的。