Contrôlez le comportement de sélection de text dans iOS Mobile Safari et / ou UIWebView?

J'ai un long document HTML qui contient plusieurs paragraphes. Lorsque j'essaie de sélectionner le text dans Mobile Safari sur iOS ou dans un UIWebView, les events suivants se produisent:

  1. Au début, j'obtiens une précision au niveau des caractères sur ma sélection. entrez la description de l'image ici
  2. Puis, comme je sélectionne plus, la précision tombe à deux lignes de text et finalement à des paragraphes entiers. Il n'y a aucun moyen de terminer ma sélection de text exactement où je veux. entrez la description de l'image ici

Lorsque j'ai défini la propriété CSS contentEditable sur true , je conserve la précision au niveau du caractère, mais le keyboard s'affiche également, ce que je ne veux pas, bien sûr.

Est-il possible de conserver la précision de sélection au niveau du caractère, quelle que soit la longueur du text que je sélectionne?

WKWebView iOS 8 pourrait être en mesure de résoudre ce problème. WKWebViewConfiguration a une propriété appelée selectionGranularity . Le commentaire se lit comme suit:

Le niveau de granularité avec lequel l'user peut sélectionner de manière interactive du contenu dans la vue Web. Les valeurs possibles sont décrites dans WKSelectionGranularity. La valeur par défaut est WKSelectionGranularityDynamic.

L'une des deux valeurs possibles est WKSelectionGranularityCharacter . Le commentaire dit:

Les extrémités de sélection peuvent être placées à n'importe quelle limite de caractère.

Je ne l'ai pas encore essayé, mais cela semble très prometteur!

Update 7/6/15 : On dirait que ce n'est pas si simple: Sélection de text dans WKWebView: WKSelectionGranularityCharacter

Mise à jour 7/10/15 : Lorsque vous étudiez de près l'application iOS Kindle, vous pouvez voir qu'ils ont ré-implémenté la sélection de text "natif" en JavaScript car ils ne pouvaient pas faire en sorte que la sélection de text natif se comporte comme ils le souhaitaient. Je suis à peu près sûr qu'ils ont essayé tout le rest avant de décider de le ré-implémenter.

Je rencontre le même problème,

Je résous cela par une ligne de CSS:

 display: inline-block; 

Les deux fonctionnent sur Safari et le WebView.

Puisque vous select également le titre du text, le browser le reconnaît comme un text complet et sélectionne tout le paragraphe. En passant, il n'y a aucun moyen de vous aider sans voir le code source HTML!

Hey, vous pouvez utiliser la propriété CSS pour ne pas laisser l'user sélectionner du text. Vous pouvez utiliser comme:

 html { user-select:none; }