不允许用户输入数字 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;
}

看到这个答案,

UIText字段文本更改事件

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

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

希望这有帮助

For Swift

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
}

最新更新