我需要验证在.
之后允许两位数的文本字段输入。
例如:如果我输入2.333它不会允许,如果只能允许2.33。
为此我使用此代码
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSArray *sep = [textField.text componentsSeparatedByString:@"."];
if([sep count]==2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
return !([sepStr length]=2);
}
}
如果我使用return !([sepStr length]=2)
它可以正常工作,不会允许输入下一个值。
但如果我删除了值,文本字段也不允许任何修改。 我的意思是没有用户互动。 它无法编辑。 谁能帮帮我吗。 我怎么能纠正这个。 提前谢谢你。
答案 0 :(得分:2)
Thomas Clayson的代码问题在于,当用户键入例如:“1234”并且之后插入“。”时,用户仍然无法再编辑文本字段。在1和2之间,或者如果他在文本字段中粘贴一个数字。
这是一个更好的解决方案:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
NSArray *sep = [newString componentsSeparatedByString:@"."];
if([sep count]>=2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@",[sep objectAtIndex:1]];
return !([sepStr length]>2);
}
return YES;
}
答案 1 :(得分:0)
您的问题可能是您没有评估回报。您只有一个=
,而是设置值而不是评估表达式。这将始终导致函数在您的情况下返回false。
无论如何,这是我的编辑:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSArray *sep = [textField.text componentsSeparatedByString:@"."];
if([sep count]==2)
{
NSString *sepStr=[NSString stringWithFormat:@"%@%@",[sep objectAtIndex:1],replacementString];
return !([sepStr length]>2);
}
}
我所做的更改是将(NSString *)string
添加到textField的当前文本值,然后进行测试以查看它是否更多超过2个字符。