UITextField
de montrer les changements faits à un UITextField
sur un UILabel
séparé. Existe-t-il un moyen de capturer le text intégral de UITextField
après chaque caractère UITextField
par l'user? Actuellement, j'utilise cette méthode, mais elle ne capture pas le dernier caractère entré par l'user.
Je sais que UITextView
a la méthode "didChange", mais je n'ai pas pu find cette méthode pour un UITextField
.
//does not capture the last character -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSsortingng:(NSSsortingng *)ssortingng { [self updateTextLabelsWithText: textField.text]; return YES; }
Comment puis-je retirer du text de UITextField après chaque caractère entré?
Je vous remercie!
UITextField
et UILabel
au storyboard / nib IBOutlet
maintenant IBOutlet
à UILabel
(Ici, j'ai utilisé myLabel ) UITextFieldDelegate
au propriétaire du file, implémentez également le même délégué dans le file .h Utilisez ces lignes de code:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementSsortingng:(NSSsortingng *)ssortingng { NSSsortingng *newSsortingng = [textField.text ssortingngByReplacingCharactersInRange:range withSsortingng:ssortingng]; [self updateTextLabelsWithText: newSsortingng]; return YES; } -(void)updateTextLabelsWithText:(NSSsortingng *)ssortingng { [myLabel setText:ssortingng]; }
J'espère que cela t'aides.
Il suffit de gérer l'événement "Modification de l'édition"
[textField addTarget:self action:@selector(editingChanged:) forControlEvents:UIControlEventEditingChanged];
et le sélecteur:
-(void) editingChanged:(id)sender { // your code }
Vous pouvez le faire manuellement, ou avec le storyboard par CTRL-Glisser l'événement Envoyé "Modifier modifié" à votre file .h, en créant la méthode editingChanged pour vous.
Dans Swift 2.0+
class CheckInViewController: UIViewController, UITextFieldDelegate { override func viewDidLoad() { super.viewDidLoad() yourTextField.delegate = self } func textField(textField: UITextField!, shouldChangeCharactersInRange range: NSRange, replacementSsortingng ssortingng: Ssortingng!) -> Bool { var updatedTextSsortingng : NSSsortingng = textField.text as NSSsortingng updatedTextSsortingng = updatedTextSsortingng.ssortingngByReplacingCharactersInRange(range, withSsortingng: ssortingng) self.methodYouWantToCallWithUpdatedSsortingng(updatedTextSsortingng) return true } }
J'espère que cela vous aidera à devenir rapidement des pionniers
Swift avec addTarget Swift 2.0+
titleTextField.addTarget(self, action: #selector(textFieldTyping), forControlEvents: .EditingChanged)
Et implémenter le selector
func textFieldTyping(textField:UITextField) { //Typing }
Dans Swift 3.0:
Certaines de ces solutions avaient un caractère derrière, ou pour des versions antérieures de Swift et Obj-C. Voici ce que j'utilise pour Swift 3.0
Dans la class j'ai déclaré un espace réservé pour stocker le text.
var tempName = ""
Dans ViewDidLoad j'ai utilisé:
nameField.addTarget(self, action: #selector(typingName), for: .editingChanged)
Ensuite, j'ai fait une fonction appelée:
func typingName(textField:UITextField){ if let typedText = textField.text { tempName = typedText print(tempName) } }