Perché il cursore a volte salta in una posizione casuale quando si digita un testo in Android?
Questo è uno dei miei principali fastidi con Android. Ho passato un po' di tempo a fare il debug quando stavo lavorando all'editor di testo di Quora per Android.
Penso che il nocciolo del problema sia che l'API della tastiera/ponte di contenuto non è scritta molto bene. Le tastiere su Android sono spesso molto "intelligenti" e fanno sostituzioni di parole e suggerimenti per voi. Per supportare ciò, l'interfaccia permette alla tastiera di cambiare la selezione in posizioni arbitrarie per fare sostituzioni di parole e così via.
Un problema con il design che ho notato è che la comunicazione è una combinazione di posizioni assolute e posizioni relative al cursore (vedi InputConnection | Android Developers). A causa di questo, la tastiera ha bisogno della propria idea di come sia l'intero testo in modo da poter inviare posizioni assolute all'interfaccia. Questo è complicato da tenere in sincronia e porta a bug come 592162 - La modifica del contenuto contenteditable con JS durante un evento chiave causa problemi di stato di composizione su Android.
Rispetto a iOS, la digitazione su Android sembra spesso laggosa o lenta. Non sono sicuro di quale sia la causa, ma penso che questo peggiori il problema di cui sopra, poiché le condizioni di gara sono ancora più probabili.
L'implementazione iOS delle tastiere personalizzate (App Extension Programming Guide: Custom Keyboard) usa solo posizioni relative al cursore, che sembra un'idea molto migliore. iOS gestisce la posizione del cursore, assicurando che non ci si ritrovi mai in questo tipo di situazione.
Articoli simili
- Come risolvere un cursore che salta su un Acer Chromebook quando digito
- Cosa faccio se ho versato del caffè sulla mia tastiera? La mia tastiera mostra diversi simboli quando si digita ora.
- Quali sono le ragioni per cui la tastiera del mio portatile Acer non digita? Come posso risolvere il problema?
- Come riparare un mouse Logitech che salta quando lo muovo sullo schermo