繁体   English   中英

如何在UITextField中检测数字长度?

[英]How to detect number length in UITextField?

有一个名称为numbercontent的UITextField,输入8个数字后,它将自动调用下一个函数。 以下是我的代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
 if (self.numbercontent.text.length == 7) {
  [self.numbercontent resignFirstResponder];
  [self stopFly];
 }
 return YES;
}

但是有一个错误

当我输入第8个数字时,它将自动调用下一个函数,但第8个数字未显示在UITextField中。

如果将self.numbercontent.text.length == 7更改为self.numbercontent.text.length > 7 ,则第8个数字将显示在UITextField中,但是我需要再输入一个数字以调用下一个函数,如何解决此问题错误,谢谢。

试试这个,而不是shouldChangeCharactersInRange

[_txtNum addTarget:self action:@selector(didChangeText:) forControlEvents:UIControlEventEditingChanged];

然后添加此方法,

-(void)didChangeText:(UITextField*)sender
{
    if(sender.text.length==8)
    {
        [self stopFly];
        [self.txtNum resignFirstResponder];
    }
}

尽管@DhavalBhimani建议的答案是处理此问题的标准方法,但可以将其他方法与当前方法一起使用,例如:

在Objective-C中:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *updatedString = [textField.text stringByReplacingCharactersInRange:range withString:string];
    if (textField.text.length == 7) {
        textField.text = updatedString;
        [textField resignFirstResponder];
        [self stopFly];
    }
    return YES;
}

在Swift 4.0中:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    let updatedString = (textField.text as NSString?)?.replacingCharacters(in: range, with: string)
    if textField.text?.count == 7 {
        textField.text = updatedString
        self.view.endEditing(true)
    }
    return true
}

用这个。

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


// _textLenghtLimit = your text max lenght
    if (_textLenghtLimit > 0) {
        if ((range.location >= _textLenghtLimit || textField.text.length + 1 > _textLenghtLimit) && range.length == 0) {
            return NO;
        }
    }
    return YES;
}

暂无
暂无

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

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