Предотвращение ужасающе широких советов по использованию 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;
}