2011-05-20 61 views
2

我的可可应用程序有一个视图,其中显示了大约五十个彩色矩形,它表示一些数据的热图。我无法弄清楚如何将工具提示添加到每个显示矩形代表的数据信息的矩形。我看了看开发者文档,NSView并添加以下代码:在视图中添加许多工具提示的问题

- (NSString *)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void *)data 
{ 

    // use the tags to determine which rectangle is under the mouse 
    if (tag == blueTag) { 
     return NSLocalizedString(@"The Blue rectangle", @""); 
    } 
    if (tag == redTag) { 
     return NSLocalizedString(@"The Blue rectangle", @"");  
    } 
    // we should never get to here! 
    return NSLocalizedString(@"Unknown tooltip area", @""); 
} 

// add tooltips for the rectangles (in my drawRect method 
// after the rects have been initialized etc.) 
[self removeAllToolTips]; 
redTag = [self addToolTipRect:startingRect owner:self userData:NULL]; 
blueTag = [self addToolTipRect:blueRect owner:self userData:NULL]; 

我遇到两个问题:
1)当我打印出的标签的提示,他们都显示1作为标记,即使它们用于两个不同的矩形。
2)stringForToolTip方法从未被称为

任何帮助/建议将是伟大的。谢谢!

回答

2

我认为主要的问题是你在-drawRect:中添加工具提示rects。如果视图被调整大小,而不是每次绘制视图,则只需更新工具提示rects。相反,请添加一个方法来配置工具提示,然后从您的视图的-init方法中调用该方法。

然后,您可以覆盖-setFrame:并在拨打[super setFrame:newFrame]后调用工具提示配置方法。

我应该指出,在您的代码中,由于日志字符串是相同的,所以这两个矩形将输出The Blue rectangle ...