2010-12-07 35 views
2

Je suis juste restreins maintenant la longueur UITextField comme ci-dessous:texte se cache sur UITextView lors du changement de taille de la police

NSString* newText = [textView.text stringByReplacingCharactersInRange:range withString:text]; 

CGSize tallerSize = CGSizeMake(textView.frame.size.width-15,textView.frame.size.height*2); 

CGSize newSize = [newText sizeWithFont:textView.font constrainedToSize:tallerSize lineBreakMode: 
UILineBreakModeWordWrap]; 

[textView setSelectedRange:range]; 

if (newSize.height > 325) 
{ 
    return NO; 
} 
else if(newSize.height == 325 && [text isEqualToString:@"\n"]) 
{ 
return NO; 
} 
else 
return YES; 

qui fonctionne très bien. Mais dans mon application, l'utilisateur peut changer la taille du texte. Si l'utilisateur tape la police en taille et en type 10px à la longueur totale, puis change sa taille de police à 30, uitextview cache les textes.

Comment puis-je résoudre ce problème? Merci pour toute aide.

+0

Pourquoi vous essayez de limiter la longueur du champ en fonction du nombre de pixels qu'elle rend comme? –

+0

@kevin: merci pour la réponse. Pouvez-vous dire alors comment peut-on limiter la longueur du champ de texte – user198725878

+0

Quelqu'un pls m'aider – user198725878

Répondre

0

1) mettre en œuvre le protocole UITextFieldDelegate

2) Mettre en oeuvre le procédé textField:shouldChangeCharactersInRange:replacementString:.

Cette méthode est appelée à chaque frappe de caractère ou remplacement de caractère précédent. dans cette méthode, vous pouvez faire quelque chose comme ceci:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    if ([textField.text length] > MAXLENGTH) { 
     textField.text = [textField.text substringToIndex:MAXLENGTH-1]; 
     return NO; 
    } 
    return YES; 
}