Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
限制用户在UITextView iOS中最多输入50个字_Ios_Regex_Uitextview_Word_Limit - Fatal编程技术网

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

限制用户在UITextView iOS中最多输入50个字,ios,regex,uitextview,word,limit,Ios,Regex,Uitextview,Word,Limit,我试图限制用户在UITextView中最多输入50个单词。我试着从这个角度来解决这个问题。这对我来说是有效的,除了用户可以在最后一个字中输入无限字符 所以我想到了使用正则表达式。我使用的正则表达式是 VonC在这方面。但这不允许我在文本视图中输入特殊符号,如“@” 在我的应用程序中,用户可以在UITextView中输入任何内容,也可以从网页、注释、电子邮件等复制粘贴内容 有人知道这个问题的其他解决方案吗 提前感谢。此代码应该适合您 - (BOOL)textView:(UITextView *

我试图限制用户在UITextView中最多输入50个单词。我试着从这个角度来解决这个问题。这对我来说是有效的,除了用户可以在最后一个字中输入无限字符

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

在我的应用程序中,用户可以在UITextView中输入任何内容,也可以从网页、注释、电子邮件等复制粘贴内容

有人知道这个问题的其他解决方案吗


提前感谢。

此代码应该适合您

  - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
        return textView.text.length + (text.length - range.length) <= 50;
    }
-(BOOL)textView:(UITextView*)textView应更改textinrange:(nsrrange)范围替换text:(NSString*)文本
{

返回textView.text.length+(text.length-range.length)按照“问题2”中的建议执行操作,但在括号内添加@,以便您也可以输入@。如果有任何内容将其视为特殊字符,则可能需要将其转义。

您可以使用
[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);
}
-(BOOL)textView:(UITextView*)textView应更改textinrange:(nsrrange)范围替换text:(NSString*)文本
{
静态常数NSU允许的最大线数=3;
NSMutableString*t=[nsmutablestringwithstring:self.textView.text];
[t replaceCharactersRange:范围与字符串:文本];
NSU整数numberOfLines=0;
对于(整数i=0;i

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

单词,而不是字符您应该仔细阅读问题。不要与其他问题的正确答案混淆。您说过问题1的答案适合您”除非用户可以在最后一个单词中输入无限字符”。如果您只设置单词限制,则任何单词都可以具有任何长度。您需要同时设置单词限制和单词长度限制。这是您想要的吗?