NSTableView: синий контур на рядах, щелкаемых правой кнопкой мыши - PullRequest
6 голосов
/ 19 ноября 2010

Мне интересно, как можно избавиться от синих контуров, которые Какао рисует вокруг строк в NSTableView / NSOutlineView при щелчке по ним правой кнопкой мыши.

NSTableView Outline http://tobidobi.com/nstableview_outline.png

Кажется, это не классический «блик» или «кольцо фокусировки», если я не ошибаюсь - так что же на самом деле?

В настоящее время я сам рисую собственные NSCells - но я не могу понять, как это сделать
* Нарисуйте этот план тоже сам или
* избавься от этого, или
* хотя бы поменяй цвет

Любые советы приветствуются! Спасибо!

Ответы [ 2 ]

13 голосов
/ 19 ноября 2010

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

Метод переопределения:

- (void)drawContextMenuHighlightForRow:(NSInteger)row;

Пожалуйста, отправьте запрос на улучшение в Apple, чтобы вам не пришлось полагаться на недокументированные методы, чтобы делать то, что вы хотите в будущем. Похоже, что два других метода подсветки табличного представления были сделаны настраиваемыми в 10.6, но этот не был. Я всегда думал, что это выглядит немного неуклюже, но необходимо указать, к какой строке относится меню (не обязательно совпадает с выделенной строкой).

2 голосов
/ 26 декабря 2015

Мой NSTableView * mainTableView не подклассифицирован, поэтому я избавился от него перед открытием контекстного меню:

- (void)menuWillOpen:(NSMenu *)menu{
     NSInteger rightClicked = [mainTableView clickedRow];
     [mainTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:rightClicked] byExtendingSelection:NO];
     [mainTableView deselectRow: rightClicked];
     [mainTableView reloadData];
    {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...