Skip to content

iOS: no way to dismiss the keyboard — UNSUPPORTED_OPERATION leads to QuickType-bar mis-taps #1598

Description

@thymikee

keyboard dismiss on iOS returns:

Error (UNSUPPORTED_OPERATION): Unable to dismiss the iOS keyboard without a native dismiss gesture or control

Benchmarked cost (AppControlBench, haiku_low element-08): after the failed dismiss the agent pressed a stale ref that now sat under the QuickType bar, appending a predictive suggestion — the sent message became "good morning TV" instead of "good morning" (same corruption signature as "Book TV" in haiku_high element-04). The keyboard being undismissable turns every post-typing interaction into a coordinate hazard.

Candidate approaches for the gap (to be validated live, in rough preference order):

  1. iPad / keyboards with a dismiss key: tap the keyboard's own dismiss/hide affordance when the AX tree exposes one.
  2. Focused-element resignation: end editing via the focused element (private AX action on the first responder, or the synthesized text-entry channel sending an end-editing event) — most faithful to "dismiss" semantics and AX-independent, consistent with the fix(ios): harden Bluesky-class interaction reliability #1588 synthesis direction.
  3. Simulator hardware-keyboard toggle (Cmd+K equivalent) — hides the software keyboard on simulators; check whether it resigns focus or just hides chrome.
  4. Safe-area tap fallback: tap a point chosen from the current snapshot that hits no interactive element (many apps resign focus on background tap) — app-dependent, last resort, must be disclosed in the response.

Whatever lands should also make keyboard dismiss's failure hint actionable (e.g. suggest press on a non-editable element or submit via type "\n" where appropriate) so agents stop tapping through the QuickType bar.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions