swift - 检查菜单栏应用程序上的按键
问题描述
我正在编写一个使用popover
. 我依靠许多教程来完成工作。
很简单,代码看起来像这样:
class AppDelegate: NSObject, NSApplicationDelegate {
var popover=NSPopover()
var statusBarItem: NSStatusItem!
func applicationDidFinishLaunching(_ aNotification: Notification) {
// Popover & Content View
let contentView = ContentView()
self.popover.contentViewController = NSHostingController(rootView: contentView)
// Menu
self.statusBarItem = NSStatusBar.system.statusItem(withLength: 18)
if let statusBarButton = self.statusBarItem.button {
statusBarButton.title = "☰"
statusBarButton.action = #selector(togglePopover(_:))
}
}
@objc func togglePopover(_ sender: AnyObject?) {
let statusBarButton=self.statusBarItem.button!
func show(_ sender: AnyObject) {
self.popover.show(relativeTo: statusBarButton.bounds, of: statusBarButton, preferredEdge: NSRectEdge.maxY)
}
func hide(_ sender: AnyObject) {
popover.performClose(sender)
}
self.popover.isShown ? hide(sender as AnyObject) : show(sender as AnyObject)
}
}
单击菜单按钮时如何检查option键是否按下?
解决方案
询问当前事件修饰符标志是否包含option
func isOptionkeyPressed() -> Bool
{
return NSApp.currentEvent?.modifierFlags.contains(.option) == true
}
推荐阅读
- ios - SwiftUI:观察@Environment 属性变化
- sql - 如何在 SQL 中从生效日期创建时间序列
- php - CakePHP bin/cake migrations migrate 命令在错误时返回退出代码 0
- javascript - .then() 异步中的 While 循环
- java - 如何仅打印 kafka 记录值而不是所有其他数据?
- c# - 如何保持两个 Winforms 标签居中对齐?
- spring - 如何修复:FaultTolerantChunkProcessor 的 Nullpointer 异常(带有 SCDF 和 docker 的 Spring Batch)?
- c# - NLog 不会在进程退出时刷新所有日志条目
- javascript - NG-bootstrap:通过一键式处理程序在单独的组件中打开多个模式
- python - 使用 import module_name as module_alias 时 sqlalchemy 模块的常用别名