Предотвращение ужасающе широких советов по использованию NSBrowserCell

Я устанавливаю свой NSBrowser подсказки для ячеек матрицы с приведенным ниже кодом:

- (void) browser:(NSBrowser *)sender willDisplayCell:(id)cell atRow:(int)row column:(int)column  {  
    NSMatrix *matrix = [sender matrixInColumn:column];
    NSLog(@"'%@'", [cell title]);
    [matrix setToolTip:[cell title] forCell:[matrix cellAtRow:row column:column]];    
}

Это приводит к замечательным подсказкам в большинстве случаев.

Однако при наведении курсора на несколько ячеек острие инструмента расширяется до гротескной ширины, превращая в остальном восхитительный опыт в такой же отвратительный, как и путающий. На скриншоте ниже показано это ужасное поведение.

Широкая нагрузка

Вывод для ячейки, вызывающей отвратительную подсказку, изображенную выше:

'gnome-1.1-tb-linux.jar'

Что может быть причиной этих, казалось бы, случайных злодеяний - я что-то упускаю из виду?

1 ответ

Решение

Решение, которое работало для меня в этом случае, заключалось в реализации - (NSRect)expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView *)view в моем NSBrowserCell подкласс, как показано ниже:

- (NSRect)expansionFrameWithFrame:(NSRect)cellFrame inView:(NSView *)view {
    NSSize size = [self.tooltipText sizeWithAttributes:@{
                       NSFontAttributeName: [NSFont systemFontOfSize:[NSFont systemFontSize]]
                   }];
    // Expansion frame displays below and indented to the right in relation to the cellFrame
    NSRect rect = NSMakeRect(cellFrame.origin.x + 10, cellFrame.origin.y + size.height, size.width, size.height);
    return rect;
}
Другие вопросы по тегам