che sto vivendo un problema su iOS e ho messo su un violino per esso:Non è possibile digitare nei campi di input html su iOS dopo aver cliccato due volte
Se viene aggiunto un listener di eventi al documento per qualsiasi evento di tocco (TouchStart/touchmove/touchend), in questo modo:
function onTouch(e){};
document.addEventListener('touchstart', onTouch, false);
che si traduce nei campi di immissione con il seguente comportamento su iOS:
- primo tocco: l'ingresso viene messa a fuoco e l'utente può digitare correttamente in esso
- tocchi successivi (con focus sul campo già in atto): la tipizzazione non funziona più
sto sperimentando e testare questo problema su iOS 5, 5.1 e 6, sia su iPad che su iPhone (simulatori e dispositivi reali).
L'unica soluzione sembra essere la rimozione del listener di eventi per ripristinare il corretto comportamento dei campi di input (o in realtà non aggiungere mai l'ascoltatore a tutti):
document.removeEventListener('touchstart', onTouch);
Ho anche notato che se ci sono più iframe nella pagina, e uno di essi aggiunge l'ascoltatore al suo documento, interrompe anche i campi di input degli altri iframe.
Il violino si comporta correttamente sul mio telefono Android.
Qualche idea perché sta succedendo? O come disporre di gestori di eventi personalizzati globali per eventi touch che non interrompano gli input su iOS?
Abbiamo riscontrato questo problema con FastClick ed è stato [tracciato pubblicamente] (https://github.com/ftlabs/fastclick/issues/51). Ho anche presentato un [bug report] (http://openradar.appspot.com/radar?id=2527401) con Apple basato in parte sul tuo caso di test. –
Ehi, sì, è sicuramente un bug di Safari per iOS, un buon lavoro che lo riporta. Mi chiedo ancora come questo problema sia rimasto inosservato per così tanto tempo .. – BFil
Ho riscontrato questo errore anche nel ridimensionamento della finestra dell'iframe tramite lo zoom in/out. –