#cocoa #selection #nstextview
#cocoa #выбор #nstextview
Вопрос:
У меня есть NSTextView, где я хотел бы управлять рисованием выделения. Кто-нибудь знает, какой метод я должен перезаписать, чтобы я мог контролировать, что рисовать в прямоугольнике выделения?
Ответ №1:
Вы не указываете, что вы хотите нарисовать, поэтому нелегко дать вам прямой ответ.
Если это просто строка атрибутов (шрифт, стиль, цвет, фон), вам не нужно ничего необычного, просто найдите NSAttributedString . Существуют такие методы, как -setSelectedTextAttributes:
и метод делегирования -textViewDidChangeSelection:
Как правило, вам не следует создавать подкласс NSTextView, если у вас нет для этого веских причин. Вы можете сделать практически все, просто используя обычные механизмы делегирования.
Если это что-то очень настраиваемое, есть множество возможностей в зависимости от того, хотите ли вы настроить выделение ( -setSelectedRange:
), нарисовать наложенный вид (получить рамку выбранного диапазона) или поработать с низкоуровневым механизмом компоновки ( -layoutManager
). Это действительно зависит.
Ответ №2:
Если вы не хотите использовать стандартные атрибуты для выделения текста, например, с помощью CALayer, вы можете получить прямоугольники, содержащие выделение, из LayoutManager NSTextView.