onKeyPress(phases:action:)
Performs an action if the user presses any key on a hardware keyboard while the view has focus.
Declaration
nonisolated func onKeyPress(phases: KeyPress.Phases = [.down, .repeat], action: @escaping (KeyPress) -> KeyPress.Result) -> some View
Parameters
- phases:
The key-press phases to match (
.down,.repeat, and.up). The default value is[.down, .repeat]. - action:
The action to perform. The action receives a value describing the matched key event. Return
.handledto consume the event and prevent further dispatch, or.ignoredto allow dispatch to continue.
Return Value
A modified view that binds hardware keyboard input when focused.
Discussion
The following example shows a hint while someone holds the Option key, and hides it again when they let go. It returns .ignored so that other views still receive the event:
CanvasView()
.focusable()
.onKeyPress(phases: [.down, .up]) { keyPress in
isShowingHint = keyPress.modifiers.contains(.option)
return .ignored
}