限制用户可能输入的字符数不起作用

时间:2016-06-27 08:18:40

标签: ios objective-c uitextview

我必须限制用户可能在textview中输入的字符数。我将它限制为500个字符 以下是我的代码,

- (void)textViewDidChange:(UITextView *)textView{

    NSInteger restrictedLength=500;

    NSString *temp=textView.text;
    NSLog(@"hekk %ld",[[textView text]length]);
    if([[textView text] length] > restrictedLength){
        textView.text=[temp substringToIndex:[temp length]-1];
    }
}

问题在于,如果用户使用键盘编辑textview,则用户可能无法输入超过500个字符。但是如果用户复制粘贴文本,则用户可以输入超过500个字符。锄头可以解决这个问题吗?

7 个答案:

答案 0 :(得分:3)

使用委托方法:

  

shouldChangeCharactersInRange

这是一个例子:

Error(8,163): PLS-00103: Encountered the symbol "01" when expecting one of the following:     * & = - + ; < / > at in is mod remainder not rem    <an exponent (**)> <> or != or ~= >= <= <> and or like like2    like4 likec between || member submultiset

答案 1 :(得分:2)

对于这种情况,最好使用 shouldChangeTextInRange 委托方法。

func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {
        let textLenghtLimit = 100 
        let isChareactersLimitReached = (textView.text.characters.count - range.length + text.characters.count > textLenghtLimit)

        return !isChareactersLimitReached
    }

答案 2 :(得分:2)

试试这个。

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    int maxCharacters = 500;
    NSString *newString = [textView.text stringByReplacingCharactersInRange:range withString:text];
    if(newString.length > maxCharacters){
        textView.text = [newString substringToIndex:maxCharacters];
        return NO;
    }
    return YES;
}

答案 3 :(得分:2)

我在我的应用程序中使用了这个代码,工作正常

-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{

    if([text isEqualToString:@"\n"])
        [textView resignFirstResponder];
    else
    {
        if (textView.text.length + (text.length - range.length) == 400) {

            [appDel displayAlert:@"Message limit is 400 character."];
        }
        return textView.text.length + (text.length - range.length) <= 400;

    }
    return YES;
}

答案 4 :(得分:1)

您可以使用shouldChangeCharactersInRange Class的UITextView委托方法。

每当UITextView更改shouldChangeCharactersInRange中的文字时,都会被调用。

因此,您可以按如下方式验证此方法中的要求:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{

    NSInteger restrictedLength=500;

    NSString *temp=textView.text;
    NSLog(@"hekk %ld",[[textView text]length]);
    if([[textView text] length] > restrictedLength){

        textView.text=[temp substringToIndex:restrictedLength];

        return NO;
    }

    return YES;
}

答案 5 :(得分:1)

以下代码限制了100个字符的文本输入

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
    {
        if(textField.text.length < 100)
        {
              return true;
        }
        return false;

    }

答案 6 :(得分:1)

简单回答

g++ -std=c++11