gpt4 book ai didi

cocoa - 更改 NSTextView 中的文本选择颜色

转载 作者:行者123 更新时间:2023-12-03 16:03:43 24 4
gpt4 key购买 nike

我正在尝试在 NSTextView 上编写“突出显示”功能。目前,一切进展顺利。您选择一个文本范围,该文本的背景颜色将更改为黄色。然而,虽然它仍然处于选中状态,但背景是所选文本的标准蓝色。如何使标准选择指示符颜色在某些情况下不显示?

谢谢!

最佳答案

使用-[NSTextView setSelectedTextAttributes:...] .

例如:

[textView setSelectedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor blackColor], NSBackgroundColorAttributeName,
[NSColor whiteColor], NSForegroundColorAttributeName,
nil]];

如果您根本不希望以任何方式指示选择(除了隐藏插入点),您可以简单地传递一个空字典。

另一个选项是监视选择更改并使用 temporary attributes 应用“选择” 。请注意,临时属性用于显示拼写和语法错误并查找结果;因此,如果您关心保留 NSTextView 的这些功能,请确保仅添加和删除临时属性,而不是替换它们。

一个例子是(在 NSTextView 子类中):

- (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];
}

关于cocoa - 更改 NSTextView 中的文本选择颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com