Contents

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 .handled to consume the event and prevent further dispatch, or .ignored to 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
    }

See Also

Responding to keyboard input