Position du curseur dans un UITextView
Je suis à la recherche d'un non chemin privé pour trouver la position du Curseur ou Signe (barre clignotante) dans un UITextView
de préférence comme un CGPoint
.
Il y a peut être une question comme ça déjà, mais il ne fournit pas de manière définitive pour le faire.
Et,
Je ne veux pas le NSRange
de la zone sélectionnée.
source d'informationauteur Joshua
Vous devez vous connecter pour publier un commentaire.
Juste obtenu dans un autre thread:
Nécessite iOS 3.2 ou une version ultérieure.
N'oubliez pas de vérifier que selectedTextRange n'est pas nul, avant d'appeler cette méthode. Vous devez également utiliser selectedTextRange.vide pour vérifier que c'est la position du curseur et non pas le début d'une plage de texte. Donc:
Pixel-Position du Curseur dans UITextView
SWIFT version 2.1:
Il n'existe pas de telle façon. Arrêt complet.
La seule chose que vous pourriez faire pour venir près est parallèlement mise en page du texte à l'aide de CoreText, il y calcualte la position du texte à partir d'un point et de l'appliquer sur la UITextView. Ceci, cependant, fonctionne avec des non-0 sélections. En outre CoreText a un texte à un autre moteur de mise en forme, par exemple, prend en charge le crénage, qui UITextView ne l'est pas. Cela peut entraîner des écarts de rendu et mis hors texte et donc de donner des sous à des résultats optimaux.
Il n'y a absolument aucun moyen pour positionner le curseur. Cette tâche est encore très bien si vous ne l'utilisation privée de l'API. C'est juste l'un des nombreux "il suffit de ne pas" dans iOS.
Swift 4 version:
Nous utilisons simplement
textView.selectedTextRange
pour obtenir le texte sélectionné la gamme et quetextView.caretRect(for:)
pour obtenirCGRect
la définition de la position du curseur.