Skip to content

fix: prevent keyboard trap in input field - WPB-14697#4955

Open
acv-w wants to merge 4 commits into
developfrom
fix/WPB-14697-keyboard-trap-input-field
Open

fix: prevent keyboard trap in input field - WPB-14697#4955
acv-w wants to merge 4 commits into
developfrom
fix/WPB-14697-keyboard-trap-input-field

Conversation

@acv-w

@acv-w acv-w commented Jul 2, 2026

Copy link
Copy Markdown
Contributor
TaskWPB-14697 [iOS] Keyboard trapped in input field #55

Issue

Prevents Tab from being inserted into the message composer by resigning the input field and moving VoiceOver focus to the next available composer control. This removes the keyboard trap.

Testing

Compose a message, press Tab, input will be dismissed.


Checklist

  • Title contains a reference JIRA issue number like [WPB-XXX].
  • Description is filled and free of optional paragraphs.
  • Adds/updates automated tests.

UI accessibility checklist

If your PR includes UI changes, please utilize this checklist:

  • Make sure you use the API for UI elements that support large fonts.
  • All colors are taken from WireDesign.ColorTheme or constructed using WireDesign.BaseColorPalette.
  • New UI elements have Accessibility strings for VoiceOver.

@acv-w acv-w requested review from a team, caldrian and netbe and removed request for a team July 2, 2026 19:44
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Test Results

1 936 tests   1 909 ✅  2m 32s ⏱️
  304 suites     27 💤
    1 files        0 ❌

Results for commit dc83851.

♻️ This comment has been updated with latest results.

Summary: workflow run #28660131583
Allure report (download zip): html-report-31496-fix_WPB-14697-keyboard-trap-input-field

@acv-w acv-w enabled auto-merge July 3, 2026 09:59

@David-Henner David-Henner left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how does this behave with VoiceOver on?

Comment on lines +90 to +91
argument: ([sendButton, ephemeralIndicatorButton] + inputBar.buttonsView.buttons)
.first { !$0.isHidden && $0.isEnabled && $0.isUserInteractionEnabled && $0.alpha > 0 }

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: what does this do ?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This basically moves the AX/VoiceOver focus to the next element. It's a nicety I figured we should add. If we want to be strict I can remove it.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

how does this behave with VoiceOver on?

It doesn't really have anything to do with VoiceOver. It will resign on tab, regardless of the VoiceOver status.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

question: how do you tab on iOS?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In this context I was referring to the "next element" / "previous element" gesture in VoiceOver.

@sonarqubecloud

sonarqubecloud Bot commented Jul 3, 2026

Copy link
Copy Markdown

@netbe netbe left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

left a question before approving

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants