【发布时间】:2019-05-02 12:41:45
【问题描述】:
所以我有一个菜单栏应用程序,它在自定义视图中有一个滑块:我希望能够在拖动时按下选项键以使滑块捕捉到增量。
现在,一切正常... 除了我找不到一种方法来通知我的菜单应用程序正在按下选项键。这是我尝试过的:
-
NSEvent.addGlobalMonitorForEvents- “请注意,不会为发送到您自己的应用程序的事件调用您的处理程序。”
-
NSEvent.addLocalMonitorForEvents- “您的处理程序不会被嵌套事件跟踪循环所消耗的事件调用,例如控件跟踪、菜单跟踪或窗口拖动”
-
NSApplication.shared.currentEvent- 这不起作用,因为应用程序不处理 flagsChanged 事件,因此将此值设置为另一个值(按下鼠标按钮)。
-
flagsChanged(with event: NSEvent)- 这不会被调用。我已将
viewController设置为acceptFirstResponder,并辞去了视图的第一响应者的职务。另外,我将视图子类化并覆盖了flagsChanged,但没有奏效。
- 这不会被调用。我已将
我尝试创建一个菜单项,该菜单项具有“s”或“p”之类的键来触发操作。但是当“动作”被触发时,菜单栏就隐藏了……
所以我试图找出当按下选项键时如何通知我。这可能吗?如果您有任何问题,我可以澄清一下。
【问题讨论】:
-
可以在菜单动作中使用NSEvent的modifierFlags,还是真的需要通知?
标签: swift cocoa first-responder nsmenu nsmenuitem