如何在NSTextView上更改NSView和NSButton的鼠标样式

时间:2018-02-05 08:49:27

标签: swift macos nsview nstextview

在NSTextView上有一个NSView,NSTextview的范围大于NSView范围。

NSView有上面的一些NSButton等,工作得很好,但鼠标风格让我有点疑惑。

我认为当鼠标移动到NSView时,它一直是箭头样式,但不是,它总是显示iBeam样式。

因为它在NSTextView上,所以当我的鼠标移动到NSView时,它会显示iBeam样式。我通过覆盖func mouseMoved(使用事件:NSEvent)实时更改鼠标NSCursor.arrow.set,虽然没关系,我发现它会闪烁并偶尔显示iBeam。

这是图层的问题吗?或者我应该做的更好,至少不会闪烁。

我看了一些问题,但他们没有很好地回答这个问题,所以我再次回答这个问题,并希望得到确切的答案。

1 个答案:

答案 0 :(得分:2)

NSTextView将鼠标光标重置为mouseMoved:事件。

如果您拥有NSTextView,则可以对其进行子类化并覆盖mouseMoved:This answer有一些很好的例子。

如果这不是您的选择,则需要将NSView(文本字段上方的那个)放在透明的无边框NSWindow中。然后通过将窗口设置为子窗口来定位并保持窗口就位。有关方法,请参阅this answer