0

我在 iOS 中有以下委托方法的实现:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

if (textField.tag == 2){

        if(textField.text.length > 2) {

            return NO;

        }

        return YES;

    }

    else if (textField.tag == 3) {

        if(textField.text.length > 1) {

            return NO;

        }

}

该代码对用户可以输入的字符数进行了必要的限制。但是,文本字段也不允许用户在输入文本后对其进行编辑。它不允许任何击键(包括删除/退格键)。有没有办法纠正这个以保持文本长度限制,但允许用户编辑这个值?

4

3 回答 3

1

你的支票全错了。您不想检查当前文本的长度,而是想检查在允许更改时文本的长度。

试试这个:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];

    if (textField.tag == 2) {
        return newText.length <= 2; // only allow 2 or less characters
    } else if (textField.tag == 3) {
        return newText.length <= 1; // only allow 1 or less characters
    } else {
        return YES;
    }
}
于 2013-03-29T05:28:04.463 回答
0

使用下面的代码

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
       NSUInteger newLength = [textField.text length] + [string length] - range.length;
       if (textField.tag == 2)
       {           
            if (newLength>2) {
            //     [textField resignFirstResponder];
                   return NO;
             }
             else {
                   return YES;
             }
        }
        else if (textField.tag == 3)
        {
            if (newLength>1) {
            //     [textField resignFirstResponder];
                   return NO;
             }
             else {
                   return YES;
             }
        }
}

试试这个你会成功的

于 2013-03-29T05:28:19.297 回答
0

我正在使用userInteractionEnabled属性UITextField来启用和禁用编辑。不确定您是否正在寻找它。

    if () // Editable
    {
        textField.userInteractionEnabled = YES;
    }
    else // Non Editable
    {
        textField.userInteractionEnabled = NO;
    }
于 2015-09-09T10:53:16.570 回答