(Il y en a quelques-un peu de solutions efficaces, voir près de la fin de la liste)
Dans mon entreprise nous souffrent également de ce. Nous avons déposé un problème avec Apple, mais ont entendu maman.
Voici quelques intéressantes jsfiddles pour aider à illustrer certains des problèmes, il semble tourner autour de l'un certain nombre de champs cachés, et ces zones de texte ne semble pas être affectée.
Du débogage d'efforts, je pense qu'il y a certaines fonctionnalités d'essayer de détecter si une entrée est une carte de crédit ou un numéro de téléphone ou une sorte spéciale qui semble causer le comportement de verrouillage. C'est juste une hypothèse, mais..
Résumé:
Sur une page avec un formulaire contenant nommé d'entrée des éléments à l'intérieur des conteneurs qui sont marqués "display: none", la première pression sur l'entrée dans cette forme a une très notable retard (20sec-2min) entre le clavier à venir et l'entrée concentré. Cela empêche les utilisateurs de l'utilisation de notre application web en raison de l'énorme temps passé avec l'interface utilisateur congelés en attente pour le clavier pour répondre. Nous avons débogué, dans les différents scénarios d'essayer et de discerner ce qui se passe, et il semble être d'un changement dans la façon dont iOS7 analyse les DOM par rapport à comment il l'a fait sur iOS6, qui n'en a aucun de ces problèmes.
À partir de débogage dans Safari Inspecteur de l'iPad connecté, nous avons constaté que iOS7 fournit beaucoup plus d'informations à propos de l' (programme)'s activités, au point que nous avons constaté que _CollectFormMetaData est le parent du problème. Rechercher des méta-données provoque massive de désabonnement qui augmente plus que linéairement avec le nombre de caché récipients contenant des entrées. Nous avons constaté que _isVisible et _isRenderedFormElement sont appelés beaucoup plus que ce qu'ils devraient raisonnablement être. En outre, si cela peut aider, nous avons trouvé quelques fonctions de détection relatifs aux cartes de crédit et les carnets d'adresses ont été grand temps que les consommateurs.
Voici quelques jsFiddles à des fins d'illustration. Veuillez les consulter dans Safari sur un iPad exécutant iOS6 et puis sur un iPad exécutant iOS7:
http://jsfiddle.net/gUDvL/20/ - Fonctionne très bien sur les deux
http://jsfiddle.net/gUDvL/21/ - Tout retard notable sur iOS 7
http://jsfiddle.net/gUDvL/22/ - Plus de retard sur iOS 7
http://jsfiddle.net/gUDvL/29/ - TRÈS en retard sur iOS 7
http://jsfiddle.net/gUDvL/30/ - la Même chose que 29 mais avec aucun cachés, pas de retard sur iOS 7
http://jsfiddle.net/gUDvL/38/ - la Même chose que 29 mais exacerbé
http://jsfiddle.net/gUDvL/39/ - 99 caché entrées, l'une visible, séparément visible
http://jsfiddle.net/gUDvL/40/ - 99 caché textareas, l'un visible, séparément visible
http://jsfiddle.net/gUDvL/41/ - 99 caché entrées, l'une visible, séparément visible, tous les
avec l'autocomplete="off" attribut
http://jsfiddle.net/gUDvL/42/ - 99 caché entrées, l'une visible, séparément visible. Caché par la position absolue et de gauche, au lieu de l'affichage.
http://jsfiddle.net/gUDvL/63/ - la Même chose que gUDvL/43/ mais avec la saisie semi-automatique, correction automatique, autocapitalize, et de vérifier l'orthographe d'arrêt
http://jsfiddle.net/gUDvL/65/ - la Même chose que gUDvL/63/ mais avec nettoyés à l'indentation (semble plus lent sur l'iPad)
http://jsfiddle.net/gUDvL/66/ - la Même chose que gUDvL/65/ mais avec aucun affichage via css, plutôt que de DOMReady jQuery
http://jsfiddle.net/gUDvL/67/ - la Même chose que gUDvL/66/ mais avec TedGrav focus/flou technique
http://jsfiddle.net/gUDvL/68/ - la Même chose que gUDvL/66/ mais avec css conduit texte-tiret au lieu de display:block à nouveau (amélioration notable de réduction de 2 à 3 secondes pour le point initial)
http://jsfiddle.net/gUDvL/69/ - la Même chose que gUDvL/68/ mais avec TedGrav focus/flou rajouté
http://jsfiddle.net/gUDvL/71/ - la Même chose que gUDvL/66/ mais avec js ajout d'une légende de la balise avant chaque entrée. (amélioration notable de réduction de 2 à 3 secondes pour le point initial)
<input type="text" autocomplete="off" /> (links to jsfiddle.net must be accompanied by code..)
(Il convient de noter que le fait d'avoir l'iPad est connecté à un Mac avec Safari débogueur engagés de façon spectaculaire met l'accent sur les retards.)
Étapes pour Reproduire:
- Charge de tout ce qui précède jsfiddles sur l'iPad
- Appuyez sur entrée pour obtenir le focus
- Regarder l'écran jusqu'à ce que vous pouvez taper
Résultats Attendus:
S'attendre à être en mesure de taper dès que le clavier apparaît
Les Résultats Réels:
Regarder le clavier pop-up et le blocage de l'écran, impossible de faire défiler ou d'interagir avec Safari pour une durée. Après la durée, l'accent est donné comme prévu. À partir de là, pas plus loin gèle sont expérimentées en se concentrant sur les intrants.
tl;dr technique du résumé
Si dans l'ensemble il y a quelques proposé des correctifs à partir des réponses très diverses:
- Ne cachez pas les divs avec display: none - utiliser quelque chose comme texte-tiret
- Court-circuit d'Apple métadonnées de la numérisation de la logique de beaucoup de balises de formulaire ou la légende des balises semblent faire l'affaire
- Mise au point automatique/flou ne fonctionne pas pour moi, mais deux personnes ont déclaré qu'il n'
Liées fils à la Pomme:
https://discussions.apple.com/thread/5468360