我需要为我的项目的所有视图做一个自定义工具提示视图。此工具提示视图具有特定的形状(五边形)、字体、字体颜色和背景颜色。它也应该有一个典型的延迟,像系统工具提示,当鼠标进入和鼠标退出视图。做这件事的最好方法是什么?谢谢你的回答
1bqhqjot1#
我需要为我的项目的所有视图做一个自定义工具提示视图。
所有的意见?大多数应用程序都有很多用户甚至不知道的视图-视图用于包含控件组等。因此,为每个视图提供工具提示会很奇怪。工具提示通常与实际做某事的界面组件一起使用,它们的目的是告诉用户那是什么。这就是为什么NSControl有管理工具提示的方法,而NSView没有。
NSControl
NSView
做这件事的最好方法是什么?首先,确定您是否真的想要每个视图的工具提示,或者您实际上只是想要可可已经提供的相同类型的工具提示,但绘制方式不同。如果是后者,那么您可以继承您使用的每种控件类型,并重写draw(withExpansionFrame:in:)来绘制您想要的工具提示类型。如果您真的需要针对每个视图的工具提示,那么最好实现自己的系统。一种方法可能是在你的应用程序中有一些对象monitor mouse moved events。您可以启动一个计时器来跟踪每个鼠标移动事件后经过的时间,每个新事件都会使旧计时器无效并启动一个新计时器。如果计时器超时,它可以在鼠标附近的窗口中添加一个显示您的五边形“工具提示”视图的视图。
draw(withExpansionFrame:in:)
1条答案
按热度按时间1bqhqjot1#
我需要为我的项目的所有视图做一个自定义工具提示视图。
所有的意见?大多数应用程序都有很多用户甚至不知道的视图-视图用于包含控件组等。因此,为每个视图提供工具提示会很奇怪。工具提示通常与实际做某事的界面组件一起使用,它们的目的是告诉用户那是什么。这就是为什么
NSControl
有管理工具提示的方法,而NSView
没有。做这件事的最好方法是什么?
首先,确定您是否真的想要每个视图的工具提示,或者您实际上只是想要可可已经提供的相同类型的工具提示,但绘制方式不同。如果是后者,那么您可以继承您使用的每种控件类型,并重写
draw(withExpansionFrame:in:)
来绘制您想要的工具提示类型。如果您真的需要针对每个视图的工具提示,那么最好实现自己的系统。一种方法可能是在你的应用程序中有一些对象monitor mouse moved events。您可以启动一个计时器来跟踪每个鼠标移动事件后经过的时间,每个新事件都会使旧计时器无效并启动一个新计时器。如果计时器超时,它可以在鼠标附近的窗口中添加一个显示您的五边形“工具提示”视图的视图。