Mors intelligent avec les claviers. Ma pensée immédiate est que peut-être que vous ne devriez pas permettre à l'utilisateur de déplacer le curseur en premier lieu.
Ce n'est pas sans précédent dans l'interface utilisateur de l'iPhone. La vue du clavier du téléphone, par exemple, restreint l'utilisateur à une entrée séquentielle. J'ai également trouvé cette technique utile pour l'entrée de monnaie. Partout avec une entrée qui a une syntaxe très rigide, fondamentalement, semble être un candidat pour ce genre de traitement. Ça pourrait bien marcher pour votre situation.
Je ne sais pas si cela est la meilleure méthode, mais voici comment je le fais:
A UITextField pour capturer l'entrée et un UILabel pour afficher l'entrée. Le champ de texte est caché mais est envoyé à devenir firstFesponder pour déclencher le clavier. Au fur et à mesure que l'utilisateur tape, les méthodes déléguées font le nécessaire pour formater le texte, si nécessaire (comme avec la devise), et mettent à jour UILabel, qui fournit les commentaires des utilisateurs sur leur saisie. En fonction de la situation, vous voudrez peut-être styliser UILabel de façon à ce que l'utilisateur ne puisse pas l'utiliser comme s'il s'agissait d'un champ de texte sélectionnable, tout en le rassurant sur le fait qu'il s'agit en fait de son entrée. .
Avec 11 caractères en jeu, je peux voir comment l'édition de curseurs pourrait être utile. Pourtant, les numéros de téléphone sont souvent dans la même gamme et je n'ai jamais de problème avec l'éditeur séquentiel dans l'application Téléphone.
Aucune des deux réponses ci-dessous ne convient à cette situation (bien qu'elles aient toutes deux un certain mérite - merci!). J'ai envoyé un bug à Apple pour détecter la position du curseur, et le client est content de l'utiliser comme il est maintenant. Phew. Faites-moi savoir si vous avez une solution qui permet de détecter la position du curseur. –
S'il vous plaît laissez-nous savoir quand Apple va répondre au bug. ;) – SNR