在自定义视图中更改工具提示

时间:2011-03-22 20:54:29

标签: cocoa tooltip nsview

我有一个示例项目:

http://ericgorr.net/cocoadev/tooltip.zip

我想要做的是为整个视图定义一个工具提示rect,但是当光标在视图内移动时能够更改工具提示。

有办法吗?有没有办法强制它隐藏当前工具提示并在调用视图时显示一个新工具:stringForToolTip:point:userData:?

我可以创建自己的窗口来模拟真实的工具提示,但是想确保没有任何内置支持这个。

1 个答案:

答案 0 :(得分:2)

检查MAAttachedWindow示例项目:
http://mattgemmell.com/source/
创建自定义工具提示的良好开端。

NSView具有针对鼠标事件的特定处理程序。
只需根据这些事件更改NSView(工具提示)。
我添加了一些片段来帮助你入门。

- (void)mouseMove:(NSEvent *)theEvent {

    NSPoint mousePositionInWindow = [theEvent locationInWindow];

}

- (void)mouseDown:(NSEvent *)theEvent {

}

- (void)mouseDragged:(NSEvent *)theEvent {

}

- (void)mouseUp:(NSEvent *)theEvent {

}

对评论的回应:

一旦我遇到了完全相同的问题:一个带有连续工具提示更新的视图显示了光标位置和一些其他信息。我从未使用过原生工具提示。最后,我想出了上面的解决方案,它易于实现,甚至看起来更好。

您还可以相对于光标位置在NSView内部绘制自定义工具提示,而不是使用单独的窗口。您还可以在现有NSView上添加额外的NSView以显示自定义工具提示。

我不喜欢原生工具提示行为。显然,它们具有无法更改的内置时间延迟,例如:光标必须在一个位置上一段时间才能首次显示工具提示。一旦第一个工具提示出现,下一个将显示更少的延迟,但它仍然非常烦人。

您可以随时在视图附近的标签中显示信息,这非常容易实现。但这不是你问题的真正答案:)