如何检测 UITextField 中的数字长度?
Posted
技术标签:
【中文标题】如何检测 UITextField 中的数字长度?【英文标题】:How to detect number length in UITextField? 【发布时间】:2018-04-11 15:53:03 【问题描述】:有一个名为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个数字时,它会自动调用next函数,但是第8个数字没有显示在UITextField中。
如果将self.numbercontent.text.length == 7
更改为self.numbercontent.text.length > 7
,UITextField中会显示第8个数字,但我需要再输入一个数字才能调用下一个函数,如何解决这个错误,谢谢。
【问题讨论】:
这个功能就像用密码解锁iPhone 【参考方案1】:试试这个,而不是shouldChangeCharactersInRange
,
[_txtNum addTarget:self action:@selector(didChangeText:) forControlEvents:UIControlEventEditingChanged];
然后添加这个方法,
-(void)didChangeText:(UITextField*)sender
if(sender.text.length==8)
[self stopFly];
[self.txtNum resignFirstResponder];
【讨论】:
非常感谢。【参考方案2】:虽然@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
【讨论】:
【参考方案3】:使用这个。
- (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;
【讨论】:
以上是关于如何检测 UITextField 中的数字长度?的主要内容,如果未能解决你的问题,请参考以下文章
输入四个字符后如何编写UItextfield长度和更改键盘数字格式的条件
如何使键盘 UITextField 中的数字视图成为默认值?