在iOS中验证数字输入的最佳方法?

时间:2016-12-12 16:20:37

标签: ios numbers swift3 formatter nsnumberformatter

我有一个UITextField,用户应键入一个浮点数。我想检查这个号码是否有我收到的某种格式,例如“dddd.dd”,其中“d”是一个数字。格式可能随时改变,因为我也将其作为输入接收,因此例如我可能想在另一时刻检查“,”字符用于小数,再说一个例子。

考虑到您从text读取的UITextField属于String类型(可选),应该采用哪种方法来实现此目标?

  • 提供格式的谓词。然后评估输入字符串。然后转换为数字。
  • 尝试转换为数字。如果成功(如何以这种方式处理分隔小数的字符?),请使用NumberFormatter检查格式?
  • 任何其他和/或更好的方式?

1 个答案:

答案 0 :(得分:1)

试试这个

viewDidLoad中或将代理人分配给自己的文本域

-(void)viewDidLoad{
   self.txtFieldName.delegate = self;
}

现在实现此委托方法 -

 -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if(textField == self.txtFieldName)
    {
        NSCharacterSet *invalidCharSet = [[NSCharacterSet characterSetWithCharactersInString:@"01234567989."] invertedSet];
        NSString *filtered = [[string componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""];
        return [string isEqualToString:filtered];
    }
    else
        return YES;
}

这将使你的textfield只能从0-9和。(十进制)中取数字。