我想做什么
我有一个循环自定义NSView子类,我想在鼠标悬停在视图的圆形部分上时更改光标的外观,但是当在视图的矩形部分落在圆圈之外时,我想要更改光标的外观。
Here's an illustration。我会用图片标签来描述它,但我太新了,无法分享这些令人敬畏的功能。
到目前为止我所知道的
我知道如何通过NSCursor更改光标的外观。我认为对于矩形视图来说,实现此目的的最佳方法是使用光标矩形。我知道我可以接收mouseMoved事件(并且当鼠标不在此视图上时应该关闭它们,使用mouseEntered和mouseExited),并且有一种简单,廉价的方法来确定一个点是否位于感兴趣的区域。
那么问题是什么呢?
据我所知,系统不会将mouseMoved事件发送到不是第一个响应者的视图。因此,如果我想在鼠标悬停在我的视图上时获取mouseMoved事件,我需要从当前拥有它的人那里窃取firstResponder状态。如果文本视图具有焦点,只需将鼠标移到这样的视图上就会将其偷走,从可用性的角度来看这是不可接受的。
因此,我的问题归结为:有更好的方法吗?我可以在不成为第一响应者的情况下获得mouseMoved事件吗?
谢谢!
我会添加以下标记:custom-views鼠标事件NSCursor firstResponder 但同样,我是一个SA诺布,所以我不能。
答案 0 :(得分:2)
我认为您可能只需要覆盖NSView中的acceptsFirstResponder方法以返回YES。如果不这样做,则视图将不会收到任何事件信息。
答案 1 :(得分:1)
它必须是圆形区域吗?如果视图的矩形范围内的任何位置都可以接受,则可以使用cursor rect。