🦋

SwiftUI: keyboardShortcut(_:modifiers:)の注意点

2023/02/04に公開
Button {
    Swift.print("Hello")
} label: {
    Text("Push Me")
}
.keyboardShortcut("a")

上記のようにkeyboardShortcut()を使うとCommandキー + AキーでButtonを押した時と同じ処理を行えます。(modifiersを指定していなくてもデフォルトでCommandキーが指定されています。)

CommandキーなしでAキーだけで発火したい場合は以下のようにmodifiersに空のSetを渡します。

Button {
    Swift.print("Hello")
} label: {
    Text("Push Me")
}
.keyboardShortcut("a", modifiers: [])

本題

Shiftキー + 文字のキーで発火するようにしようと思ったらビープ音が鳴って発火しませんでした。

.keyboardShortcut("a", modifiers: [.shift])

実は、Shiftキーを押すと文字が大文字になるため、ダメ判定になるっぽいです。(つまり大文字小文字を区別している。)

.keyboardShortcut("A", modifiers: [.shift])

こうしたら通りました。

Discussion