简体   繁体   English

将maxlength设置为特定的UITextField

[英]Set maxlength to specific UITextField

i tried to set maxlength to my UITextfield but it also affects my other UITextfield. 我试图将maxlength设置为我的UITextfield,但它也会影响我的其他UITextfield。

i tried to use : 我试图使用:

- (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;
}

i would like to set maxlength to specific uitextfield only. 我只想将maxlength设置为特定的uitextfield。

First, check the editing textfield. 首先,检查编辑文本字段。 Then check the length of the string 然后检查字符串的长度

- (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;
}

Ref: Set UITextField Maximum Length 参考: 设置UITextField最大长度

Add tag to your textfield. 将标签添加到您的文本字段。 and in the delegate shouldChangeCharactersInRange method check whether the textfield corresponds to the particular tag. 并在委托shouldChangeCharactersInRange方法中检查文本字段是否对应于特定标签。

#define MAXLENGTH 10

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if (textField.tag == 1){
    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;
}
return true;
}

It is for swift, Try this 这是为了迅速,试试这个

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let length = ((txtPhoneNumber.text?.count)! - range.length) + string.count
    if length <= 9 {
        return true
    }
    return false
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM