【问题标题】:OSX - How to tell if cursor is visibleOSX - 如何判断光标是否可见
【发布时间】:2014-05-03 23:40:00
【问题描述】:

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

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) 时,不会返回对光标可见性的引用。虽然显示/隐藏计数器由石英维护,但无法访问该值。

那么,我们如何判断光标是否可见?

【问题讨论】:

    标签: macos osx-mavericks mouse-cursor


    【解决方案1】:

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

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

    您的 Mac 似乎对每个应用程序都有自己的计数器...因此,如果您的应用程序不在前台并且它使用 [NSCursor hide] 命令,当您的应用程序再次变为 keyWindow 时,它仍然可见但变为不可见。

    【讨论】:

      【解决方案2】:

      我知道这有点晚了,但我最近偶然发现了一个类似的问题。解决此问题的一种方法是将空游标压入游标堆栈,而不是像这样调用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.currentmyCursor 的引用,看看您是否仍然有 invisible 光标(虽然我没有检查过)。

      【讨论】:

        猜你喜欢
        • 2016-07-29
        • 2011-02-16
        • 1970-01-01
        • 2019-09-22
        • 2015-12-29
        • 2010-10-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多