不允许用户输入数字1作为UITextField中的第一个数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不允许用户输入数字1作为UITextField中的第一个数字相关的知识,希望对你有一定的参考价值。

我有一个UITextField,用户可以输入他们的电话号码。我需要的电话号码采用以下格式:5567289223,而不是这样,开头还有1:15567289223。

我已经有一个if语句设置,所以如果数字大于10位或小于10位,它将引发错误。

我不知道如何解决的唯一最后一个问题是用户是否尝试在电话号码的开头加一个额外的1。

我需要设置一个if语句,这样如果电话号码中的第一个字符是“1”,我们将抛出一个错误,或者更简单的解决方案是使用shouldChangeCharactersInRange,这样如果它是他们输入的第一个数字UITextField然后它不能是1。

之前有人给了我这个解决方案来控制哪些字符被允许输入UITextField:https://stackoverflow.com/a/22265084/3344977

我一直在尝试修改它,以便它不允许数字“1”成为输入UITextField的第一个数字,但我无法让它正常工作。

任何帮助是极大的赞赏。

答案

我根据您的需要修改了您要使用的示例,您可以查看它

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if(textField==self.testTextField&&range.location==0)
{
    if ([string hasPrefix:@"1"])
    {
        return NO;
    }
}

return YES;
}
另一答案

看到这个答案,

UITextField text change event

我会设置一个事件处理程序,就像在该示例中提到的那样。然后选择器中的if语句:

if([textField.text length] == 1 && [textField.text isEqualToString:@"1"]){

     //Do something.
}

希望这可以帮助

另一答案

对于斯威夫特

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool
{

 if textField == self.txtFieldName && range.location == 0
    {
        if string.hasPrefix("1"){
            return false
        }
    }
    return true

}

以上是关于不允许用户输入数字1作为UITextField中的第一个数字的主要内容,如果未能解决你的问题,请参考以下文章

将逗号添加到数字值作为UITextField中的用户类型

如何在 Swift 中防止 UITextField 中出现空白或空格?

仅允许 UITextField 输入 Swift iOS8 的电子邮件 [重复]

在 UITextField 中添加逗号作为用户类型的数值

如何使键盘 UITextField 中的数字视图成为默认值?

UITextField 拒绝允许用户输入