Как нарисовать фон определенного диапазона текста в NSTextView - PullRequest
0 голосов
/ 12 мая 2010

Это не конкретная ошибка, скорее, она не знает, как что-то сделать.

У меня есть NSTextView, и мне нужно рисовать фон определенных диапазонов текста, когда пользователь нажимает на определенную часть текстового представления. Я пробовал это, но у меня просто странное поведение в том смысле, что иногда текст теряет цвет переднего плана или фон не охватывает весь диапазон:

NSLayoutManager *layoutManager = [myTextView layoutManager];
[layoutManager removeTemporaryAttribute:NSBackgroundColorAttributeName
                      forCharacterRange:range];
[[myTextView layoutManager] setTemporaryAttributes:attributes 
                                 forCharacterRange:range];

Ради простоты предположим, что диапазон всегда является допустимой строкой (это в моей тестовой среде).

1 Ответ

2 голосов
/ 12 мая 2010

Код, который вы разместили, мне кажется правильным.

иногда текст теряет передний план цвет

Это цвет переднего плана, который вы используете временный атрибут? Обратите внимание, что использование -setTemporaryAttributes:forCharacterRange: устанавливает (вместо добавляет к ) словарь временных текстовых атрибутов для данного диапазона (см. -addTemporaryAttributes:forCharacterRange: для добавления).

или фон не распространяется весь ассортимент

Не видя остальной части вашего кода, единственное, что я могу предложить, это убедиться, что ваше значение range является правильным, когда это происходит. Попробуйте NSLog 'прямо перед тем, как использовать его, и проверьте журнал сразу после того, как воспроизвели проблему.

Возможно, вы также захотите убедиться, что после установки цвета фона во временные атрибуты вы не удаляете этот атрибут из части этого диапазона в другом месте вашего кода.

...