我正在尝试在NSTextView上编写“高亮”功能。目前,一切都很顺利。您选择一段文本范围后,该文本的背景色就会变为黄色。但是,在仍然选中的情况下,背景是所选文本的标准蓝色。我如何使特定情况下不显示标准选择指示器颜色?
谢谢!
我正在尝试在NSTextView上编写“高亮”功能。目前,一切都很顺利。您选择一段文本范围后,该文本的背景色就会变为黄色。但是,在仍然选中的情况下,背景是所选文本的标准蓝色。我如何使特定情况下不显示标准选择指示器颜色?
谢谢!
请使用-[NSTextView setSelectedTextAttributes:...]
方法。
例如:
[textView setSelectedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor blackColor], NSBackgroundColorAttributeName,
[NSColor whiteColor], NSForegroundColorAttributeName,
nil]];
- (void)setSelectedRanges:(NSArray *)ranges affinity:(NSSelectionAffinity)affinity stillSelecting:(BOOL)stillSelectingFlag;
{
NSArray *oldRanges = [self selectedRanges];
for (NSValue *v in oldRanges) {
NSRange oldRange = [v rangeValue];
if (oldRange.length > 0)
[[self layoutManager] removeTemporaryAttribute:NSBackgroundColorAttributeName forCharacterRange:oldRange];
}
for (NSValue *v in ranges) {
NSRange range = [v rangeValue];
if (range.length > 0)
[[self layoutManager] addTemporaryAttributes:[NSDictionary dictionaryWithObject:[NSColor blueColor] forKey:NSBackgroundColorAttributeName]
forCharacterRange:range];
}
[super setSelectedRanges:ranges affinity:affinity stillSelecting:stillSelectingFlag];
}