如何限制UITextView iOS中的字符

我有一个UITextView,我想限制用户可以输入的字符数。 如果文本字段为空但我没有运气,我也试图显示警告。

textview.h @property (nonatomic,strong) IBOutlet UITextView *textField; @property (nonatomic, retain) NSString *userText; textview.m - (IBAction)next:(id)sender { self.userText = self.textField.text; if ([self.textField.text length] == 0) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error!" message:@"Enter some text" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } } 

这是文本限制方法似乎不起作用,

 - (BOOL)textView:(UITextView *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if(range.length + range.location > textField.text.length) { return NO; } else { NSUInteger newLength = [textField.text length] + [string length] - range.length; return newLength <= 70; return (textField.text.length <= 70); } } 

1)像这样在你的viewcontroller中添加UITextViewDelegate

 @interface ViewController : UIViewController  

每次用户在键盘上键入字符时,就在显示字符之前,调用以下方法。 这是一个方便的位置,用于测试用户正在键入的字符,并禁止您要限制的特定字符。

TextView中:shouldChangeCharactersInRange:replacementString

2)然后编写以下代码。 而不是140你可以把你想要的任何数字。

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { return textView.text.length + (text.length - range.length) <= 140; } 

有关更多帮助,请查看UItextView

Swift 2.0解决方案

  func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool { return textView.text.characters.count + (text.characters.count - range.length) <= textViewLimit } 

尝试这个

  - (BOOL)isAcceptableTextLength:(NSUInteger)length { return length <= 70; } - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { return [self isAcceptableTextLength:textField.text.length + string.length - range.length]; } -(IBAction)checkIfCorrectLength:(id)sender{ if (![self isAcceptableTextLength:self.textField.text.length]) { // do something to make text shorter } } 

您可以使用下面的代码来限制第一种方法中的textview字符,您可以为textfield设置受限制的长度,或者如果您经过的文本超过了受限文本,它将创建该字符串的子字符串以修复textview的长度。

 #pragma mark - Textview Delegate -(void)textViewDidChange:(UITextView *)textView { NSString *temp = textView.text; titleLength = textView.text.length; if (titleLength > RESTRICTED_LENGHT ) { textView.text = [temp substringToIndex:RESTRICTED_LENGHT]; } } 

或者您可以使用此委托方法,如果文本视图文本长度大于您的限制长度,则返回否。

  - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if([text length] == 0) { if([textView.text length] != 0) { return YES; } } else if([[textView text] length] > 139) { return NO; } return YES; }