IOS – Solution de contournement pour la mise au point manuelle sur une entrée / texte

J'ai donc vu beaucoup de discussions sur le problème iOS en mettant l'accent sur un élément input / textarea. (Voir ici et ici ) Il semble que iOS ne vous permette pas de vous concentrer manuellement sur l'un de ces éléments et exige qu'il s'agisse d'un véritable clic / clic pour se concentrer sur l'élément.

J'ai essayé de simuler un clic, déclencher un clic, simplement faire clic () tout de suite … toutes sortes de choses.

Voici ma solution actuelle que j'essaie d'implémenter:

$scope.gotoElement = function(eID) { // call $anchorScroll() $scope.smoothScrollTo(eID).then(function() { clickElement('#textarea'); }); } function clickElement(e) { $(e).on('touchstart', function() { //$(e).val('touchstart'); $(e).focus(); }); $(e).trigger('touchstart'); } 

Vous ne devez pas vous soucier de la fonction de défilement, je sais que cela fonctionne et j'ai suffisamment testé cela. Le commentaire $(e).val('touchstart') fonctionne sans problèmes pour modifier le texte de la zone de texte, mais le .focus() ne fonctionne pas sur iOS. J'ai testé ceci sur un appareil Android et ça marche bien, mais sur iOS, il ne suffit pas d'ouvrir le clavier. Parfois, il va commencer à faire passer le clavier pendant une demi-seconde puis disparaître à nouveau.

J'ai examiné d'autres threads comme je l'ai mentionné ci-dessus, et je ne peux pas imaginer comment écrire une solution de contournement pour cela.

Des idées?

J'ai également été harcelé avec ce problème. Mon problème résolu par une simple propriété css qui est -webkit-user-select:none J'ai repris ceci et tout fonctionne bien. Essayez ceci.

Sur votre UIWebView , définissez keyboardDisplayRequiresUserAction en NO .

J'ai utilisé iPad Air [iOS 7.0.4], iPad Mini [iOS 7.1] et jQuery [1.11.3] pour mon test.

L'événement .focus a parfaitement fonctionné pour moi dans les champs entrée et texte.

Je collage le code ci-dessous avec lequel j'ai testé. Permettez-moi de savoir si je manque de rien.

Est-ce pour une version précédente d'iOS / jQuery?

Mon HTML,

 <body> <!--<input id="in" type="text"/>--> <textarea id="in"></textarea> <button id="btn">Add Focus</button> </body> 

Ma requête,

 $('#btn').click(function(){ $('#in').focus(); })