3

我想做的事

我有一个圆形自定义 NSView 子类,当鼠标悬停在视图的圆形部分上时,我想更改光标的外观,而不是在视图矩形落在圆圈之外的部分上时。

这是一个插图。我会用图像标签内联它,但我太新了,无法参与这些很棒的功能。

到目前为止我所知道的

我知道如何通过 NSCursor 改变光标的外观。我认为为矩形视图完成此操作的最佳方法是使用光标矩形。我知道我可以接收 mouseMoved 事件(并且应该在鼠标不在此视图上方时使用 mouseEntered 和 mouseExited 将其关闭),并且有一种简单、廉价的方法来确定某个点是否位于感兴趣的区域中。

那么有什么问题呢?

据我所知,系统不会将 mouseMoved 事件发送到不是第一响应者的视图。因此,如果我想在鼠标悬停在我的视图上时获取 mouseMoved 事件,我需要从当前拥有它的人那里窃取 firstResponder 状态。如果文本视图有焦点,只需将鼠标移到这样的视图上就会把它偷走,从可用性的角度来看这是不可接受的。

因此,我的问题归结为:有没有更好的方法来做到这一点?我可以在不成为第一响应者的情况下获得 mouseMoved 事件吗?

谢谢!

我会添加以下标签: custom-views mouse-events NSCursor firstResponder 但同样,我是 SA 菜鸟,所以我不能。

4

2 回答 2

2

我认为您可能只需要覆盖 NSView 中的acceptsFirstResponder 方法即可返回YES。如果您不这样做,则视图将不会收到任何事件信息。

于 2009-07-23T04:49:22.750 回答
1

它必须是圆形区域吗?如果视图矩形范围内的任何位置都可以接受,则可以使用光标 rect

于 2009-07-23T17:02:44.647 回答