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

我试图限制用户在UITextView中输入最多50个单词。 我试过PengOne从这个问题1中解决的问题 。 这对我有用,除非用户可以在最后一个单词中输入无限制的字符。

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

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

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

提前致谢。

此代码应该适合您。

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

按照“question2”中的建议操作,但在括号内添加@,以便您也可以输入。 如果有什么东西把它当成一个特殊的角色,可能需要逃脱它。

您使用[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:方法。