问题描述
我正在编写一个使用popover
的MacOS菜单栏应用程序。我依靠许多教程来使事情进展。
非常简短,代码看起来像这样:
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
}