将 maxlength 设置为特定的 UITextField

Posted

技术标签:

【中文标题】将 maxlength 设置为特定的 UITextField【英文标题】:Set maxlength to specific UITextField 【发布时间】:2018-05-07 09:31:17 【问题描述】:

我尝试将 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。

【问题讨论】:

添加支票:if (textField == myTextField) //what you did goes here 需要在文本域中添加标签,并在 shouldChangeCharactersInRange 方法中比较标签 【参考方案1】:

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

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

参考:Set UITextField Maximum Length

【讨论】:

【参考方案2】:

将标签添加到您的文本字段。并在委托 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;

【讨论】:

【参考方案3】:

这是为了快速,试试这个

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

【讨论】:

我使用了目标 - c

以上是关于将 maxlength 设置为特定的 UITextField的主要内容,如果未能解决你的问题,请参考以下文章

根据内容大小属性设置 UIText 视图的宽度

无法为 HTML5 中的数字字段设置 maxlength 属性 [重复]

如何根据AngularJS中的不同组合框值在输入字段上设置maxlength?

禁用 UILabel、UIText 等的自动调整字体。在 iOS/Swift 中?

无法更改 UIText 视图的字体(使用 Web 服务时)

如何在h:inputTextarea上设置maxlength属性