OSX - 如何判断光标是否可见

时间:2014-03-25 21:08:08

标签: macos cursor osx-mavericks

我知道这个问题已经回答了:

Detect if cursor is hidden on Mac OS X

但此时,函数“CGCursorIsVisible”已被弃用。根据帮助文献,没有替代品。

https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/c/func/CGCursorIsVisible

使用隐藏和显示功能(CGDisplayHideCursor / CGDisplayShowCursor)时,不会返回对光标可见性的引用。虽然显示/隐藏计数器由石英维护,但无法访问该值。

那么,我们如何确定光标是否可见?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,找不到这个问题的有效答案。

我通过实现一个计数器来解决它,当我的应用程序启动时,该计数器设置为0。我每次隐藏光标时都会增加它,然后我可以在_counter != 0

时取消隐藏

你的Mac似乎有一个自己的计数器用于每个应用程序...所以如果你的应用程序不在前台并使用[NSCursor hide]命令,当你的应用程序成为keyWindow时,它仍然可见但变得不可见试。

答案 1 :(得分:0)

我知道这有点晚了,但是我最近偶然发现了一个类似的问题。解决此问题的一种方法是将一个空游标推入游标堆栈,而不是像这样调用NSCursor.hide()

let myCursor = NSCursor.init(image: NSImage.init(size: NSSize(width: 1, height: 1)), hotSpot: NSPoint(x: 0, y: 0))
myCursor.set()

稍后,您可以使用NSCursor.arrow.set()NScursor.arrow.push()按下普通箭头光标。

这样,您就不会出现隐藏/取消隐藏计数的问题。 从理论上讲,您还应该能够对照NSCursor.current检查myCursor的引用,并查看您是否还有 invisible 光标(不过我没有检查)。