Swift3 MenuItemのキーバインド(KeyEquivalent)をコードから指定する

StoryBoardからキーバインド(KeyEquivalent)を設定できるが、 コードからも設定できる。

目次

とりあえず使えればいい

  • menu itemReferencing OutletsAppDelegateなどに設置。
  • 設定したいタイミングで、<設置したoutlet名>.keyEquivalent に設定したいキーバインドの文字列(Tならt)などを代入する。
  • 終わり。

コードで言えばこんな感じ

// メニューアイテムの参照。StoryBoardから接続する。
@IBOutlet weak var menu_something: NSMenuItem!

func applicationDidFinishLaunching(_ aNotification: Notification) {
    // これでキーバインドが再設定される。
    menu_something.keyEquivalent = "t"
}

修飾キーも使いたい

大文字で指定するとシフトキーが押される必要があるので注意

代入値   実際のバインド
t       T
T       Shift+T

また、や、controloptionなどを修飾キーとして利用したい時は、これに合わせて別のプロパティへの代入が必要。

// これは、Shift+Tの扱いになる。
menu_something.keyEquivalent = "T"

// これをつけると、さらに⌘が必要になる
menu_something.keyEquivalentModifierMask = NSEventModifierFlags.command

複数の修飾キーを使いたい

NSEventModifierFlagsのプロパティを組み合わせる時は以下のようにする

// ⌘とcontrolを同時押し
let newmask = NSEventModifierFlags.command.union(NSEventModifierFlags.control)
menu_something.keyEquivalentModifierMask = newmask

3つ以上使いたいなら、メソッドチェーンでunionしていけばOK。

勉強用図書

詳解Swift 第3版
詳解Swift 第3版
posted with amazlet at 17.03.21
荻原 剛志
SBクリエイティブ
売り上げランキング: 68,208
タイトルとURLをコピーしました