Vous devez définir delegate
de UITextView sur l'une de vos classes. (En IB ou par programme, peu importe)
Dans votre délégué, vous pouvez mettre la fonction suivante, ou quelque chose de similaire:
-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text
{
if ([text length] == 0) return YES; // always allow deletion of characters
NSString *new = [textView.text stringByReplacingCharactersInRange:range
withString:text];
if ([new length] > 100) // PUT IN YOUR MAGIC CONDITION HERE
{
return NO; // don't allow the edit to happen
}
return YES; // by default, allow the edit to happen
}
cela limite seulement l'entrée à 100 caractères, mais vous pouvez le faire aussi compliqué que vous le souhaitez.
modifier ps, vous a demandé « quelle touche l'utilisateur a appuyé », mais étant donné que nous faisons cela peut donner aussi copier & a coller et auto-correction, un text
qui est plus long que 1 caractère!
je l'ai lié dans mon propriétaire de fichiers (voir controler) est-ce bon? – user377419
Oui, si vous avez créé votre propre classe de contrôleurs de vue contenant cette fonction et que vous avez défini la classe du contrôleur sur votre propre classe dans IB, cela devrait fonctionner. – mvds
Dites-moi si je fais ce droit. J'ai 2 classes app délacer et voir le contrôleur. J'ai traîné le delagate de mon textView dans le propriétaire des fichiers. J'ai copié collé cette méthode dans mon contrôleur de vue et l'ai appelé comme ça. Je suppose que les arguments sont le nom de la vue que vous voulez affecter, le nombre de caractères dans la vue ou la plage que vous voulez. affecter et le texte que vous voulez avoir mis lorsque le texte ne correspond pas aux paramètres. – user377419