从NSTextStorage中删除字符范围,但保持其他颜色正确吗?

时间:2014-01-14 11:10:34

标签: objective-c cocoa nstextstorage

我想将NSTextView_A文本的相同颜色应用于另一个NSTextView_B文本,只有NSTextView_A文本的片段。

我使用NSLayoutManagerDelegate将NSTextView_A文本着色应用于NSTextView_B并且

- (NSDictionary *)layoutManager:(NSLayoutManager *)layoutManager shouldUseTemporaryAttributes:    (NSDictionary *)attrs forDrawingToScreen:(BOOL)toScreen atCharacterIndex:(NSUInteger)charIndex effectiveRange:(NSRangePointer)effectiveCharRange

然后我删除了NSTextView_B文本中的字符范围:

[[_sourceCodeTextView textStorage]beginEditing];
[[_sourceCodeTextView textStorage]deleteCharactersInRange:    NSMakeRange(0, 253)];
[[_sourceCodeTextView textStorage]endEditing];

Changing Text Storage

中所述

现在的问题是,字符会被正确删除,但是在删除之前应用文本的颜色而不考虑新的范围。

作为示例:NSTextView_A文本在0-253范围内是蓝色的,例如绿色背后的一切。删除NSTextView_B文本(0-253)中的字符后,生成的文本为蓝色,之后为绿色,但不仅仅是绿色。

如何使着色符合新文本片段?

0 个答案:

没有答案