Использование -[NSTextView setSelectedTextAttributes:...]
.
Например:
[textView setSelectedTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[NSColor blackColor], NSBackgroundColorAttributeName,
[NSColor whiteColor], NSForegroundColorAttributeName,
nil]];
Вы можете просто пропустить пустой словарь, если вы вообще не хотите, чтобы выделение указывалось каким-либо образом (за исключением скрытия точки вставки).
Другой вариант - отслеживать изменения выбора и применять «выбор», используя временные атрибуты . Обратите внимание, что временные атрибуты используются, чтобы показать орфографические и грамматические ошибки и найти результаты; поэтому, если вы заботитесь о сохранении этих функций 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];
}