gpt4 book ai didi

swift - 如何处理 Cocoa 菜单栏应用程序中的修改键

转载 作者:行者123 更新时间:2023-11-28 13:41:33 25 4
gpt4 key购买 nike

所以我有一个菜单栏应用程序,在自定义 View 中有一个 slider :我希望能够在拖动时按下选项键以使 slider 对齐增量。

现在,一切正常...除了我找不到单一的方法来通知我的菜单应用程序正在按下选项键。这是我尝试过的:

  1. NSEvent.addGlobalMonitorForEvents

    • “请注意,不会为发送到您自己的应用程序的事件调用您的处理程序。”
  2. NSEvent.addLocalMonitorForEvents

    • “您的处理程序不会被嵌套事件跟踪循环消耗的事件调用,例如控件跟踪、菜单跟踪或窗口拖动”
  3. NSApplication.shared.currentEvent

    • 这不起作用,因为应用程序未处理 flagsChanged 事件,因此此值设置为另一个值(按下鼠标按钮)。
  4. flagsChanged(事件:NSEvent)

    • 这不会被调用。我已将 viewController 设置为 acceptFirstResponder 并退出了 View 的第一响应者。此外,我对 View 进行了子类化并重写了 flagsChanged,但这并没有奏效。
  5. 我试过创建一个菜单项,它有一个像“s”或“p”这样的键来触发一个 Action 。但是当“ Action ”被触发时,菜单栏隐藏...

所以我正在尝试寻找当按下选项键时如何通知我。这可能吗?如果您有任何问题,我可以澄清。

最佳答案

在您的自定义 slider View 的 mouseDragged 方法中,您只需检查 NSEvent 参数的 modifierFlags 以查看它是否包含选项键。

--

因为可以将 slider 解释为实际的 NSSlider,如果是这种情况,则 slider 的控件实际上是在 NSSliderCell 中实现的,并且鼠标跟踪从 View 传递到 mouseDown 中的单元格,因此NSSlider 的 mouseDragged 不会被调用,相反您必须在单元格的 trackMouse:inRect:... 方法中工作。但是,如果您使用的是 NSSlider,那么您可能只想使用 altIncrementValue

关于swift - 如何处理 Cocoa 菜单栏应用程序中的修改键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55952719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com