1

我正在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'

是什么导致了这些看似随机的暴行——我是否遗漏了一些明显的东西?

4

1 回答 1

2

在这种情况下对我有用的解决方案是- (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;
}
于 2012-09-12T12:27:23.107 回答