2011-10-21 5 views
1

J'utilise UITextView dans mon application, je veux que l'utilisateur saisisse un maximum de 5 lignes de texte, j'ai passé quelques jours sur google mais je n'ai toujours pas de chance, quelqu'un peut-il m'aider !!Limiter le nombre de lignes dans UITextView

PS: limite pas le nombre de caractères mais nombre de « lignes »

J'ai essayé de trouver nombre de lignes et utiliser cette méthode textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text, retour NO lorsque la limite est atteinte, mais le bouton espace arrière ne fonctionne pas après la limite atteinte.

Merci!

+0

double possible de http://stackoverflow.com/questions/5225763/limit-the-number-of-lines -for-uitextview et http://stackoverflow.com/questions/411398/limiting-text-in-a-uitextview – phi

+0

-1, cette question ne montre aucun effort. En dehors de la recherche de solutions d'autres personnes sur Google, qu'avez-vous déjà essayé? – Rob

+0

+1 pour cette question, il a dit qu'il a essayé quelque chose :) – caribbean

Répondre

2

Si les lignes ne sont pas emballés automatiquement, vous pouvez utiliser ceci:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { 
     if([text isEqualToString:@"\n"]) { 
      rows++; 
     if(rows >= maxNumberOfLines){ 
      //Exit textview 
      return NO; 
      } 
     } 
     return YES; 
} 

Cela devrait fonctionner, mais ce n'est pas la meilleure façon de traiter avec elle.

Il serait probablement préférable d'utiliser la taille de la chaîne et de la comparer à la taille du texte pour la limiter.

+1

J'ai essayé de trouver le nombre de lignes et d'utiliser cette méthode textView: '(UITextView *) textView shouldChangeTextInRange: (NSRange) range replacementText: (NSString *) text', retourner NO lorsque la limite est atteinte mais le bouton d'espace arrière ne fonctionne pas après la limite atteinte. – user945711

+0

Cela ne fonctionne pas si l'utilisateur atteint naturellement une nouvelle ligne (sans appuyer sur retour). – Deco

+0

Déco, https://www.google.com/search?q=define%3A+newline&pws=0&hl=fr. Ceux-ci ne sont pas «atteints naturellement». AFAIK .. – Wolfert

0

Vous pouvez essayer de regarder la UITextInput Protocol suivante (que le UITextView est conforme aux) méthodes

- (NSInteger)characterOffsetOfPosition:(UITextPosition *)position withinRange:(UITextRange *)range 

- (UITextRange *)characterRangeByExtendingPosition:(UITextPosition *)position inDirection:(UITextLayoutDirection)direction 

- (CGRect)firstRectForRange:(UITextRange *)range 

@property(nonatomic, readonly) UITextPosition *endOfDocument 
Questions connexes