2013-12-11 31 views
1

我想限制用户在UITextView中输入最多50个字。我尝试了Pengune从question1的解决方案。这适用于我,除了用户可以在最后一个字中输入无限制的字符。限制用户在UITextView中输入最多50个字iOS

所以我想用正则表达式。我在question2中使用由 VonC给出的正则表达式。但是,这并不让我输入特殊符号,如“@在文本视图。

在我的应用程序,用户可以从网页,票据,电子邮件等

在UITextView中输入任何内容或只是复制粘贴

谁能知道这方面的任何替代的解决方案?

在此先感谢。

+0

你说问题1的答案适合你“除了用户可以在最后一个词中输入无限制的字符”。那么如果你只设置了一个字的限制,任何字都可以是任意长度的。您需要设置字数限制和字长限制。那是你要的吗 ? –

回答

3

此代码应为你工作。

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

单词,而不是字符 –

0

做的suggeste d在“question2”中,但在括号内添加@以便您可以输入。如果有任何东西将其视为特殊字符,可能需要将其转义。

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:当选择文本的部分或该选择被改变,例如复制或粘贴的文字部分时作为被调用。

+0

您应该仔细阅读问题。不要导致与其他问题的正确答案混淆。 – Mani