首页 > 解决方案 > 将 maxlength 设置为特定的 UITextField

问题描述

我试图将 maxlength 设置为我的 UITextfield,但它也会影响我的其他 UITextfield。

我尝试使用:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    // Prevent crashing undo bug – see note below.
    if(range.length + range.location > textField.text.length)
    {
        return NO;
    }

    NSUInteger newLength = [textField.text length] + [string length] - range.length;
    return newLength <= 25;
}

我只想将 maxlength 设置为特定的 uitextfield。

标签: iosobjective-cuitextfield

解决方案


首先,检查编辑文本字段。然后检查字符串的长度

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

    /// always allow other textfields
    if (textField != specificTextfield) {
         return YES;
    }

    /// check max length

    NSUInteger oldLength = [textField.text length];
    NSUInteger replacementLength = [string length];
    NSUInteger rangeLength = range.length;

    NSUInteger newLength = oldLength - rangeLength + replacementLength;

    BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;

    return newLength <= MAXLENGTH || returnKey;
}

参考:设置 UITextField 最大长度


推荐阅读