Il n'y a probablement personne d'autre dans le monde qui se soucie de cela, mais je vais y répondre au cas où quelqu'un a besoin de ce à un moment donné.
Comme je l'ai mentionné dans les commentaires, j'utilise le framework cappuccino et j'avais 3 problèmes différents.
Laissez-moi vous donner la configuration ici. Je créais une application de cacao avec un WebView incorporé et chargeant une page avec une application de cappuccino dedans. Au premier tabulation entre les champs ne fonctionne pas tout à fait pour n'importe quelle forme sur n'importe quelle page Web.
- Comme je l'ai dit dans les commentaires, si vous utilisez IB, vous pouvez définir les fenêtres de la initialFirstResponder 'être le WebView, et au moins les formes fonctionnent correctement « normales ». Cappuccino n'a toujours pas.
Deuxième était le problème où keyCode et charCode dans l'événement dom était différent de WebView dans le cacao à Safari. Il se trouve qu'il y a quelque chose qui s'appelle le mode 'keyboard quirks'. Si vous cherchez _needsKeyboardEventDisambiguationQuirks
dans la WebView ObjC classe source vous verrez qu'il fait une exception pour le safari, l'éteindre. Il est censé le désactiver pour les anciennes versions de WebKit, mais ce n'est pas le cas. voir webkit bug 32694 Pour résoudre ce problème, j'ai dû faire deux choses différentes. a) remplacer _needsKeyboardEventDisambiguationQuirks
pour qu'il renvoie NO b) si le WebView est déjà instancié lorsque vous remplacez cette méthode, vous devrez également appeler le [[webviewinstance preferences] _postPreferencesChangesNotification]
pour le faire fonctionner. Votre WebView envoie alors les événements DOM comme Safari. Enfin, cappuccino examinait la chaîne de l'agent utilisateur pour déterminer comment gérer certains éléments. Il vérifiait WebKit et Safari. J'ai criblé la chaîne d'agent utilisateur safari et l'ai définie en tant que chaîne d'agent utilisateur personnalisée pour le WebView.
[mywebviewinstance setCustomUserAgent: @"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.19.4 (KHTML, like Gecko) Version/5.0.3 Safari/533.19.4"]
Enfin, tout a fonctionné comme il l'a fait en safari.
Espérons que cela aide quelqu'un!
Un certain nombre de choses doivent être ajoutées ici. Pour la plupart des sites Web, l'initialFirstResponder de la fenêtre sur le webview a résolu mon problème. Cependant, j'avais toujours des problèmes étranges en utilisant mon framework javascript (cappuccino). D'après ce que je peux dire, la plupart des navigateurs Web envoient un événement dom 'keydown' avec un keyCode de 9 et un charCode de 0 lorsque vous appuyez sur la touche de tabulation.Le webview envoie un événement dom de keydown qui a keyCode et charCode mis à 9, qui confondait le cadre. Si je trouve comment résoudre ce problème, je reviendrai. –