NSMenuItemの中でキーボード入力を受け取って処理をしたい
NSMenuItemのviewで、キーボード入力に従って動作するものを作りたいと思っています。
ところが、上下左右キーでメニューの選択を移動する機能のせいで、最初のkeyDownの直後に他のメニュー項目へ移動してしまいます。
目的のメニュー項目だけ選択移動の機能を無効にして、とどまらせる方法はないでしょうか。
class AppController: NSObject {
@IBOutlet weak var statusMenu: NSMenu!
@IBOutlet weak var metronomeView: MenuItemView!
var statusItem = NSStatusBar.system.statusItem(withLength:NSStatusItem.variableLength)
var menuItem: NSMenuItem!
override func awakeFromNib() {
statusItem.menu = statusMenu
menuItem = statusMenu.item(withTitle: “Menu”)
menuItem.view = MenuItemView
}
}
class MenuItemView: NSView {
override var acceptsFirstResponder: Bool { return true }
override var canBecomeKeyView: Bool { return true }
override func keyDown(with event: NSEvent) {
super.keyDown(with:event)
//入力されたキーに応じた処理
}
override func keyUp(with event: NSEvent) {
super.keyUp(with:event)
//入力されたキーに応じた処理
}
}