bug: scroll assist needs improved keyboard estimation on web
See original GitHub issuePrequisites
- I have read the Contributing Guidelines.
- I agree to follow the Code of Conduct.
- I have searched for existing issues that already report this problem, without success.
Ionic Framework Version
- v4.x
- v5.x
- v6.x
Current Behavior
On iOS Safari (and as an app with βAdd to Home Screenβ), there is an uncomfortable pause when switching between inputs.
Expected Behavior
When tapping another input on the page to switch focus, there should be no delay when no scrolling is required and keyboard remains open.
Steps to Reproduce
- Open following app in Safari on iOS/iPadOS device or simulator:
- with βDevice Previewβ QR-code on https://dashboard.ionicframework.com/preview/f7e6e842/mbb6khxjl9
- or directly at https://mbb6khxjl9.appflowapp.com/
- tap βAddress Line 1β
- caret appears at the beginning of Address Line 1
- keyboard shows up
- tap βAddress Line 2β
- caret disappears from βAddress Line 1β
- keyboard stays open
- β awkward pause lasting about a second β
- caret appears at the beginning of Address Line 2
reproducible on:
- iPad Air 2 (iPadOS 14.6)
- iPhone 12 mini (iOS 14.4; on Simulator)
Code Reproduction URL
https://github.com/ippeiukai/ionic-safari-input-issue-23664
Ionic Info
$ ionic info
Ionic:
Ionic CLI : 5.4.16 (/β β β β β β β /lib/node_modules/ionic)
Ionic Framework : @ionic/angular 5.6.11
@angular-devkit/build-angular : 12.1.2
@angular-devkit/schematics : 12.1.2
@angular/cli : 12.1.2
@ionic/angular-toolkit : 4.0.0
Capacitor:
Capacitor CLI : 3.1.1
@capacitor/core : 3.1.1
Utility:
cordova-res : not installed
native-run : 1.4.0
System:
NodeJS : v12.22.3 (/β β β β β β β /bin/node)
npm : 6.14.13
OS : macOS Catalina
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Ionic CLI update available: 5.4.16 β 6.11.8
The package name has changed from ionic to @ionic/cli!
To update, run: npm uninstall -g ionic
Then run: npm i -g @ionic/cli
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Additional Information
Observing the DOM with Web Inspector suggests the relocateInput
hack is being executed when βAddress Line 2β is tapped, although there is no scrolling happening and the keyboard is already open and remains open.
https://github.com/ionic-team/ionic-framework/blob/v5.6.11/core/src/utils/input-shims/hacks/common.ts#L14
Our production app (which uses @ionic/angular 5.3.3) is affected and one of the views has severely degraded user experience as a result. Any help or workaround would be greatly appreciated.
Issue Analytics
- State:
- Created 2 years ago
- Comments:12 (7 by maintainers)
Top GitHub Comments
The code that handles scroll assist is here: https://github.com/ionic-team/ionic-framework/blob/7315e0157b917d2e3586c64f8082026827812943/core/src/utils/input-shims/hacks/scroll-assist.ts
You can also disable scroll assist for now by setting
scrollAssist: false
in your Ionic config. This allows you to avoid this behavior while continuing to useion-input
.@corysmc Second this, βscrollAssist: falseβ fixes it. Despite any repercussions caused in iOS or Android builds. I refuse to βadd blank space at bottom of your ion-contentβ. Seems silly even if it works. This is not our fault and the failure of ionic dev team. Should be properly fixed truly. I refuse to hinder UX design at my own cost.
https://github.com/ionic-team/ionic-framework/issues/13414 The link above shows that this has been an issue since 2017. Of course, Ionitron Bot closed it, nothing new there. This is a problem with ionic dev team and they seem to have refused to provide a solid fix for it. If I am wrong and there is an actual fix besides this, please correct me @liamdebeasi or let me know. Just stating facts from what I have seen since 2017.