Пользовательский выбор чертежа в NSTextView

#cocoa #selection #nstextview

#cocoa #выбор #nstextview

Вопрос:

У меня есть NSTextView, где я хотел бы управлять рисованием выделения. Кто-нибудь знает, какой метод я должен перезаписать, чтобы я мог контролировать, что рисовать в прямоугольнике выделения?

Ответ №1:

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

Если это просто строка атрибутов (шрифт, стиль, цвет, фон), вам не нужно ничего необычного, просто найдите NSAttributedString . Существуют такие методы, как -setSelectedTextAttributes: и метод делегирования -textViewDidChangeSelection:

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

Если это что-то очень настраиваемое, есть множество возможностей в зависимости от того, хотите ли вы настроить выделение ( -setSelectedRange: ), нарисовать наложенный вид (получить рамку выбранного диапазона) или поработать с низкоуровневым механизмом компоновки ( -layoutManager ). Это действительно зависит.

Ответ №2:

Если вы не хотите использовать стандартные атрибуты для выделения текста, например, с помощью CALayer, вы можете получить прямоугольники, содержащие выделение, из LayoutManager NSTextView.