J'ai plusieurs UITextFields dans UITableView. L'utilisateur ne devrait pouvoir insérer que des chiffres et des points. Pour ce faire, j'ai mis le type de clavier à UIKeyboardTypeNumberPad et ajouté un bouton '.' Dans le coin inférieur gauche. Chaque fois que le bouton est pressé, une fonction est appelée. Cette fonction devrait insérer un point à la position actuelle du curseur, mais c'est le problème: UITextField n'a pas de propriété selectedRange, donc je ne suis pas capable d'obtenir la position actuelle du curseur. Est-ce que quelqu'un sait comment résoudre ce problème ou existe-t-il un autre moyen de le faire? Merci.Chaîne d'insertion à la position du curseur de UITextField
Répondre
J'ai enfin trouvé une solution à ce problème! Vous pouvez mettre le texte que vous avez besoin d'insérer dans le système de carton, puis le coller à la position actuelle du curseur:
[myTextField paste:self]
J'ai trouvé la solution sur le blog de cette personne:
http://dev.ragfield.com/2009/09/insert-text-at-current-cursor-location.html
La fonctionnalité de pâte est OS V3.0 spécifique, mais je l'ai testé et cela fonctionne très bien pour moi avec un clavier personnalisé.
Mise à jour: Selon le commentaire de Jasarien ci-dessous, il est conseillé de sauvegarder d'abord le contenu du carton et de le restaurer par la suite. Pour plus de commodité, voici mon code:
// Get a reference to the system pasteboard
UIPasteboard* lPasteBoard = [UIPasteboard generalPasteboard];
// Save the current pasteboard contents so we can restore them later
NSArray* lPasteBoardItems = [lPasteBoard.items copy];
// Update the system pasteboard with my string
lPasteBoard.string = @"-";
// Paste the pasteboard contents at current cursor location
[myUIField paste:self];
// Restore original pasteboard contents
lPasteBoard.items = lPasteBoardItems;
[lPasteBoardItems release];
Lire la valeur du champ de texte sous la forme d'une chaîne lorsque vous appuyez sur votre bouton. Modifiez la chaîne, puis définissez la valeur du champ sur la nouvelle chaîne.
Si vous cherchez à créer des champs de texte qui vous permettent d'entrer dans décimales puis-je suggérer que vous fixer plutôt le point décimal à une certaine précision et permettre à l'utilisateur d'entrer des numéros comme suit:
En supposant que votre la précision est de 2 chiffres après la virgule:
start: value is 0.00
user enters 1: value is 0.01
user enters 2: value is 0.12
user enters 3: value is 1.23
user enters 4: value is 12.34
Affichez What is the best way to enter numeric values with decimal points? pour une solution similaire pour la monnaie.
C'est une solution de loin plus simple que de créer un clavier personnalisé et de gérer toutes les nuances que présente cette approche. Si, toutefois, vous avez besoin d'une précision de longueur variable, cette approche peut mieux vous convenir.
Merci. Je pense que c'est le meilleur moyen. – WetFish
Il y a maintenant un clavier de type pavé numérique fantastique qui comprend un point décimal, aucune configuration nécessaire, sauf réglage (pas IB, pas une option encore là) les UITextField
« s keyboardType
propriété à UIKeyboardStyleDecimalPad
, comme ceci:
textField.keyboardType = UIKeyboardTypeDecimalPad;
Cela fait tous les trucs de fantaisie que vous avez essayé de le faire automatiquement.
- (void)insertText:(NSString *)text
disponible dans iOS 3.2 et versions ultérieures.
semble être la réponse appropriée pour cette question à l'heure actuelle. – GoGreen
Swift
Ce texte insère à la position du curseur.
textField.insertText("Hello")
Ma réponse complète à travailler avec la position du curseur est here.
- 1. Trouver la position du curseur
- 2. position du curseur du reglage après suppression
- 3. Winforms: Emplacement de l'écran de la position du curseur
- 4. position du curseur lors de l'actualisation de la page
- 5. Obtenir la position du curseur dans une zone de texte
- 6. jQuery Définir la position de la souris (pas la position du curseur)
- 7. jtextfield position du curseur par défaut
- 8. Trouver la position du curseur dans un TextBox
- 9. Comment réserver la position du curseur dans le contrôle CEdit?
- 10. Comment puis-je obtenir la position du curseur/curseur dans un élément d'entrée HTML?
- 11. Comment changer la position du curseur de la souris dans OpenGL/Glut?
- 12. Position actuelle du curseur lors de l'utilisation de la bibliothèque Ruby Prawn
- 13. Comment faire pour définir la position du curseur de la souris à un point spécifié sur l'écran en C#?
- 14. UITextField focus
- 15. Conserver la position du curseur dans l'éditeur VS2008 après "Break All"
- 16. Comment trouver la position du nième jeton
- 17. Visual Studio Addin - 1. Comment ajouter un menu contextuel? 2. Comment obtenir la position du curseur
- 18. Obtenir et définir la position du curseur dans iframe contentEditable (Firefox)
- 19. Récupère l'identifiant des liens pour la position actuelle du curseur dans le contrôle webrowser
- 20. Comment puis-je calculer le numéro de ligne par rapport à la position du curseur dans TextArea avec Flex?
- 21. Est-il possible d'insérer un extrait de code multiligne relatif à la position du curseur dans Visual Studio?
- 22. Limiter la taille UITextField
- 23. UITextField loupe événement?
- 24. position de chaîne de la carte à numéro de ligne dans la sortie regex
- 25. Détecter la position d'un div
- 26. Comment trouver la position d'un curseur dans une zone de texte? C#
- 27. Définition du curseur personnalisé à partir du fichier de ressources
- 28. Oracle Analytics à l'intérieur du curseur
- 29. Ajout du bouton "Effacer" à un iPhone UITextField
- 30. Définir la couleur du curseur flexible multiple pour un curseur double curseur: Urgent
C'est ce que la question a réellement demandé. Et, et une excellente solution. – oberbaum
Ceci est une excellente solution. Cependant, cela peut valoir la peine de mentionner ici que vous devez sauvegarder le contenu du carton de l'utilisateur avant de mettre votre contenu sur la table de montage, puis restaurer le contenu de l'utilisateur par la suite. De cette façon, ils n'ont aucune idée que vous avez utilisé la table de montage et que votre code est un bon citoyen en n'obstruant pas le contenu de la table de montage de l'utilisateur. – Jasarien
Cette solution est incompatible avec VoiceOver. Au lieu de parler le personnage inséré, il dit simplement "Coller". –