Comment puis-je déclarer qu'un champ de texte ne peut contenir qu'un nombre entier?
Dans swift, je suis en train de faire un champ de texte qui permettra à un bouton pour être activé, mais seulement lorsque le champ de texte contient un nombre entier. Comment puis-je faire cela?
OriginalL'auteur | 2014-11-13
Vous devez vous connecter pour publier un commentaire.
UITextFieldDelegate
en ajoutantUITextFieldDelegate
à la déclaration de classe.IBOutlet
s pour votre champ de texte et de votre bouton.viewDidLoad
configurer votre bouton deisEnabled
propriétéfalse
et définirself
comme letextField.delegate
.textField:shouldChangeCharactersInRange:replacementString:
méthode. Cette méthode sera appelée à chaque fois que votre champ de texte est édité. Dans le cas, vérifiez si le champ de texte est converti enInt
en appelanttoInt()
et d'activer/de désactiver votre bouton autant de fois que désiré.Voici le code:
EDIT: En Swift 3 la
enabled
propriété est modifiée àisEnabled
.@IBOutlet weak var textField: UITextField!
et puis renommez où il est utilisé. Sinon, il se mélange avec le type et est déroutant au premier coup d'œil pour un débutant.Je crois que c'est
Int(text)
au lieu detext.toInt()
OriginalL'auteur vacawama
Deux choses:
Spécifier le type de clavier pour ne montrer que le pavé numérique. Ainsi, définir la
keyboardType
à.numberPad
. Ce n'est cependant pas suffisant pour empêcher l'utilisateur d'entrer des caractères non valides dans le champ de texte. Par exemple, l'utilisateur est toujours en mesure de coller du texte ou de l'interrupteur claviers lors de l'utilisation d'un iPad.Spécifier le champ de texte du délégué et de mettre en œuvre
shouldChangeCharactersInRange
qui n'acceptent pas tous les caractères autres que des chiffres0
si9
:Pour Swift 2 rendu, voir de la révision précédente date de la présente réponse.
D'accord. Mise à jour de réponse. J'ai aussi ajouté des regex exemple, qui ouvre la porte pour modèle plus complexe de mise en correspondance.
Ou, de nos jours,
range
paramètre est facultatif et vous pouvez l'omettre entièrement comme dans mon révisé réponse.OriginalL'auteur Rob
Swift 4: Comment un simple
guard
ettypecasting to Int
comme ci-dessousOriginalL'auteur Naishta
Chaque champ de texte a un
keyboardType
. Vous pouvez définir ce àUIKeyboardType.NumbersAndPunctuation
pour afficher uniquement les numéros et encore de retour de la clé (défense de l'INTERFACE utilisateur). Vous pouvez ensuite utiliserNSScanner
'sscanInt()
pour vérifier si textField.le texte est un entier valide.OriginalL'auteur mumush
Vous pouvez utiliser NSScanner à faire ici, c'est le ce qui pourrait être utile d'essayer d'utiliser ce et laissez-moi savoir si il ya des problèmes
passer par le lien http://rosettacode.org/wiki/Determine_if_a_string_is_numeric#Objective-C. Essayez-la dans swift, la classe et la méthode de noms sont identiques.
OriginalL'auteur yashwanth77
Voici une réutilisables méthode pour le Cacao, swift 4.1
1 - Créer un fichier avec la classe NSTextFieldFormated ci-dessous
2 - Dans la " Identité de l'inspecteur' modifier 'CustomClass classe " du terrain pour être mis en forme pour NSTextFieldFormated
3 - Dans la "Attributs de l'inspecteur de "définir le" int Valeur Min', 'int Valeur Max " et "int Longueur " du terrain à être formaté
4 - faites Glisser et déposez un "Objet" (NSObject) à partir de labibliothèque d'Objets "à la" - Vue-Contrôleur de Scène' dans le plan d'interface builder objets d'inscription (à gauche de l'interface de la zone de dessin)
5 - Dans la " Identité de l'inspecteur' set 'CustomClass classe " pour NSTextFieldFormated
6 - Sélectionnez le champ à être mis en forme et les Connexions à l'inspecteur de définir le champ délégué à la nouvelleChamp de Texte Formaté' objet ' - Vue-Contrôleur de Scène'.
Puis le NSTextField est maintenant au format.
OriginalL'auteur Luc-Olivier
OriginalL'auteur akbar khan
Que pour accepter de revenir en arrière et d'autres caractères de contrôle, j'ai utilisé la méthode suivante:
Si vous le souhaitez accepter floating points aussi, il suffit de modifier la RegEx pour
Si la limite est la taille du texte 10, de modifier la dernière ligne de la forme suivante:
OriginalL'auteur Dilmurat Abduqayyum