如何在自定义NSView中设置光标?

时间:2011-03-01 17:34:09

标签: objective-c cocoa macos nsview nscursor

我有一个自定义视图,需要根据鼠标的位置设置光标。我使用[NSCursor set]将光标设置在mouseMoved:处理程序中。这适用于OS X 10.5,但大部分时间不在10.6上。有时光标会改变,但通常不会。

问题是我必须设置光标以响应mouseMoved:事件,我无法注册光标,或使用NSTrackingAreaupdateCursor:事件。我正在为NetSurf浏览器开发一个Cocoa前端。引擎期望来自前端的鼠标移动事件。如果光标在链接上或需要不同光标的东西上,引擎会从前端调用一个函数来设置新光标。

关于如何在Snow Leopard上使用它的任何想法?

2 个答案:

答案 0 :(得分:0)

通常,您应该使用CursorRects来避免其他视图更改光标。但是,由于您无法做到这一点,您可以通过在鼠标进入视图时禁用窗口级别的CursorRects来防止干扰。在鼠标退出视图时,启用窗口的后面光标。

答案 1 :(得分:0)

只需在mouseEnter和mouseExit中使用推送和弹出NSCursor对象