限制用户在UITextView iOS中输入最多50个单词

时间:2013-12-11 09:20:32

标签: ios regex uitextview word limit

我试图限制用户在UITextView中输入最多50个单词。我尝试了PengOne的解决方案question1。这对我有用,除非用户可以在最后一个单词中输入无限制的字符。

所以我想到了使用正则表达式。我使用的是正则表达式 这个question2中的VonC。但这不允许我在文本视图中输入特殊符号,如“@”。

在我的应用中,用户可以在UITextView中输入任何内容,或者只是从网页,笔记,电子邮件等中复制粘贴。

任何人都可以知道任何替代解决方案吗?

提前致谢。

3 个答案:

答案 0 :(得分:3)

此代码应该适合您。

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

答案 1 :(得分:0)

按照“问题2”中的建议操作,但在括号内添加@,以便您也可以输入。如果有人将它视为一个特殊的角色,可能需要逃脱它。

答案 2 :(得分:0)

您使用[NSCharacterSet whitespaceCharacterSet]来计算单词。

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
static const NSUInteger MAX_NUMBER_OF_LINES_ALLOWED = 3;

NSMutableString *t = [NSMutableString stringWithString: self.textView.text];
[t replaceCharactersInRange: range withString: text];

NSUInteger numberOfLines = 0;
for (NSUInteger i = 0; i < t.length; i++) {
    if ([[NSCharacterSet whitespaceCharacterSet] characterIsMember: [t characterAtIndex: i]]) {
        numberOfWord++;
    }
}

return (numberOfWord < 50);
}

当选择一段文本或更改选择时,例如复制或粘贴一段文本时,将调用方法textViewDidChangeSelection: