Xcode ショートカットキーを実装する - shirajira/family-account-ios GitHub Wiki

Xcode ショートカットキーを実装する

やりたいこと

外部キーボード入力によるショートカットキーを実装したい!

実装方法

1. ショートカットキーに対応したメソッドを実装する

@objc func doSomething() {
    // ...
}

@objc は必須。

2. ショートカットキーを受け付ける

UIViewController を継承していることが条件。

keyCommands をオーバーライドする。

class XxxxxxViewController: UIViewController {

    override var keyCommands: [UIKeyCommand]? {
        let commands = [
            UIKeyCommand(input: "s", modifierFlags: [.command], action: #selector(doSomething), discoverabilityTitle: "Something"),
        ]
        return commands
    }

    @objc private func doSomething() {
        // ...
    }

}

各ショートカットキーの動作と割り当てを UIKeyCommand に登録し,その配列を返せばよい。

UIKeyCommand の引数は以下のとおり:

  • input: 対応するキー。大文字か小文字かは問わない?
  • modifierFlags: 修飾キー。配列形式なので複数指定することもできる
  • action: ショートカットキーの動作。#selector でメソッドを指定する
  • discoverabilityTitle: ヘルプに表示する文字列

iOS,iPadOS などでは当該 ViewController 上で command キーを長押しすればヘルプが表示される親切仕様になっている。
ヘルプに表示する文字列は必要に応じてローカライズするとよいでしょう。