光标放在视图出现之前,NSCursor不会更改?

时间:2017-08-09 21:46:57

标签: swift macos cocoa

所以这是我的问题,我有一个按钮,当悬停在上面时应该显示一个pointingHand光标图标。在你的日常情况下,它工作得非常好,将鼠标悬停在它上方可将光标更改为我期望的效果。然而问题在于我将光标留在我希望显示按钮的区域。

这是我遇到奇怪的光标问题的地方,我的光标会显示指向手,然后切换到常规箭头,然后切换到正常箭头,然后返回到常规箭头,然后它保持不变,直到我将光标移出并返回到视图中。

到目前为止,这是我在实现这一点时所拥有的。

基本上我已经覆盖了我的nsbutton子类中的resetCursorRects函数,

以下是我为跟踪区域启用的选项

NSTrackingArea(rect: bounds, options: [.mouseEnteredAndExited, .activeInKeyWindow, .inVisibleRect], owner: self, userInfo: nil)

override func mouseEntered(with theEvent: NSEvent) {
    super.mouseEntered(with: theEvent)
    resetCursorRects()
}

override func resetCursorRects() {
    window?.invalidateCursorRects(for: self)
    addCursorRect(bounds, cursor: cursor.value)
}

因此,除了在按钮加载时重置光标后,当光标位于按钮的跟踪区域内时,我明显地重置了光标。我不知道我在这里失踪了什么导致我所看到的行为。任何帮助将不胜感激。

0 个答案:

没有答案