Использование -[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];
}
Установив цвет фона clearColor, подсветка работает только после того, как весь выбор будет завершен. Как я могу применить эти атрибуты по мере выбора? – DexterW 2010-11-29 06:34:36