【问题标题】:Set maxlength to specific UITextField将 maxlength 设置为特定的 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 方法中比较标签

标签: ios objective-c uitextfield


【解决方案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
      猜你喜欢
      • 1970-01-01
      • 2018-06-06
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-16
      • 2011-09-12
      相关资源
      最近更新 更多