【发布时间】:2017-08-19 18:57:08
【问题描述】:
我的自定义 NSView 子类覆盖 menu(for:) 以便在右键单击(ctrl-click)时显示上下文菜单。
我创建了一个具有适当目标/操作的菜单项,并将其添加到菜单中。
我想实例化一个子视图,并将其放置在最初发生右键单击的位置;但是,不清楚如何获取导致显示菜单的原始点击事件的位置。
action 方法的 sender 参数获取 NSMenuItem 实例,但这似乎没有任何属性来确定其在屏幕(或其父视图)上的位置。
如何确定初始右键事件的位置?
【问题讨论】:
-
您必须在某处存储(位置)原始事件。您可以使用菜单项的
representedObject。 -
怎么样?右键单击不会触发
mouseDown(with:)。 -
哦,你的意思是,存储
menu(for:)中传入的事件位置? -
谢谢,它有效。我认为我无法从传递给
menu(for:)的NSEvent实例中获取点击位置(我想这是它传递的原因之一)。如果你把它作为一个答案,我会接受它。
标签: macos cocoa contextmenu nsmenu