我想将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];
中所述
现在的问题是,字符会被正确删除,但是在删除之前应用文本的颜色而不考虑新的范围。
作为示例:NSTextView_A文本在0-253范围内是蓝色的,例如绿色背后的一切。删除NSTextView_B文本(0-253)中的字符后,生成的文本为蓝色,之后为绿色,但不仅仅是绿色。
如何使着色符合新文本片段?