如何限制 UITextView iOS 中的字符

发布时间: 2016/5/8 23:44:43
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有 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:

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

@interface ViewController : UIViewController <UITextViewDelegate>

每次用户在键盘上键入一个字符,只是之前显示所述字符,以下的方法会被调用。这是一个方便的位置,测试用户输入的字符并不容许你想要限制的特定字符。

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

Swift2.0 解决方案

 func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
    return textView.text.characters.count + (text.characters.count - range.length) <= textViewLimit
}
官方微信
官方QQ群
31647020