Objective c 向视图中添加许多工具提示时出现问题

Objective c 向视图中添加许多工具提示时出现问题,objective-c,cocoa,macos,nsview,tooltip,Objective C,Cocoa,Macos,Nsview,Tooltip,我的Cocoa应用程序有一个视图,其中显示大约50个彩色矩形,表示一些数据的热图。我不知道如何将工具提示添加到每个显示该矩形所表示数据信息的矩形中。我查看了NSView的开发人员文档,并添加了以下代码: - (NSString *)view:(NSView *)view stringForToolTip:(NSToolTipTag)tag point:(NSPoint)point userData:(void *)data { // use the tags to determine

我的Cocoa应用程序有一个视图,其中显示大约50个彩色矩形,表示一些数据的热图。我不知道如何将工具提示添加到每个显示该矩形所表示数据信息的矩形中。我查看了
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", @"");
}

我遇到了两个问题:
1) 当我打印出工具提示的标记时,它们都显示为标记
1
,即使它们用于两个不同的矩形。
2) 永远不会调用
stringForToolTip
方法


任何帮助/建议都会很好。谢谢

我认为主要问题是您在
-drawRect:
中添加了工具提示rect。仅当视图调整大小时,而不是每次绘制时,才需要更新工具提示矩形。相反,添加一个方法来配置工具提示矩形,然后从视图的
-init
方法调用它

然后可以重写
-setFrame:
,并在调用
[super-setFrame:newFrame]
后调用工具提示配置方法

我应该指出,在您的代码中,两个矩形都将输出蓝色矩形,因为日志字符串是相同的

// 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];