Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • A Ahad Mobile
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • holatech
  • Ahad Mobile
  • Merge requests
  • !152

fix(transfer): dismiss iOS keyboard on outside tap

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged Hung Hoang requested to merge hunghoang/fix/transfer-keyboard-dismiss into develop Oct 27, 2026
  • Overview 4
  • Commits 6
  • Pipelines 5
  • Changes 20

Overview

Fix Transfer to card and audit every numeric-keyboard screen for the same iOS outside-tap dismissal failure.

Root cause

The form used a plain View, which provides no outside-tap keyboard-dismiss behavior. iOS decimal-pad keyboards have no Done button, so the keyboard remained visible after tapping other rows.

Fix

  • Use ScrollView with keyboardShouldPersistTaps='handled' so buttons, selectors, MAX, and currency chips still receive the first tap while the keyboard is open.
  • Wrap each affected scroll surface in KeyboardDismissArea so tapping non-input content still dismisses the keyboard. Keep keyboardDismissMode='on-drag' where it was already present.
  • KeyboardDismissArea accepts an optional className, allowing the Send confirmation and Cash deposit amount screens to retain their exact NativeWind padding tokens. Withdraw v2 keeps its scroll indicator hidden.
  • Wallet Send: handleSend now calls Keyboard.dismiss() before registering the deposit / opening the AppKit prompt, so the keyboard never covers the signing prompt or error toast.

Review responses (Khanh Pham)

  1. Maestro chỉ có screenshot, chưa assert keyboard đã đóng: fe/.maestro/app/batch2/transfer-keyboard-dismiss.yaml now asserts, not just screenshots: numeric row 1 is visible while the keyboard is open and assertNotVisible after the outside tap, on both Transfer (tap Fee) and Supply (tap Already supplied). The typed value is anchored with ^99$ before the keyboard assertion so a missed focus fails loudly, and the one-tap asset-selector reopen after dismissal is still asserted.
  2. WalletSend đánh dấu handled nhưng handleSend chưa dismiss keyboard trước khi mở prompt/toast: fixed in deposit-wallet-send-form.tsx; Keyboard.dismiss() is the first statement of handleSend. New regression test dismisses the keyboard before starting the wallet send flow fails on the old code and passes with the fix.

Verification

  • Before the fix: Maestro screenshot showed the keyboard still visible after tapping Fee. After the fix: the same flow completes and the new keyboard assertions pass.
  • Supply outside-tap dismissal is verified, and its asset selector still opens with one tap after reopening the keyboard.
  • Login succeeds with one tap immediately after password input; the same Maestro flow failed before these review fixes.
  • Full Jest: 1640/1640 tests pass across 155 suites. pnpm type-check: pass. pnpm lint: 0 errors (remaining warnings pre-date this branch).
  • Maestro flow transfer-keyboard-dismiss: every step COMPLETED on the iOS simulator, including the new keyboard assertions.
  • Current origin/develop is merged and the Cardholder conflict is resolved.
Edited Oct 28, 2026 by Hung Hoang
Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: hunghoang/fix/transfer-keyboard-dismiss