Ios 不允许用户在UITextField中输入数字1作为第一位数字
我有一个UITextField,用户可以在其中输入他们的电话号码。我需要的电话号码是以下格式:5567289223,而不是像这样的一个额外的1在开始:15567289223 我已经有一个if语句设置,所以如果数字大于10位或小于10位,它将抛出一个错误 最后一个我不知道如何解决的问题是,如果用户试图在电话号码的开头加上1 我需要设置一个if语句,这样如果电话号码中的第一个字符是“1”,我们就会抛出一个错误,或者更简单的解决方案是使用Ios 不允许用户在UITextField中输入数字1作为第一位数字,ios,iphone,objective-c,uitextfield,nsrange,Ios,Iphone,Objective C,Uitextfield,Nsrange,我有一个UITextField,用户可以在其中输入他们的电话号码。我需要的电话号码是以下格式:5567289223,而不是像这样的一个额外的1在开始:15567289223 我已经有一个if语句设置,所以如果数字大于10位或小于10位,它将抛出一个错误 最后一个我不知道如何解决的问题是,如果用户试图在电话号码的开头加上1 我需要设置一个if语句,这样如果电话号码中的第一个字符是“1”,我们就会抛出一个错误,或者更简单的解决方案是使用shouldChangeCharactersInRange,这样
shouldChangeCharactersInRange
,这样如果是他们在UITextField中键入的第一个数字,那么它就不能是1
早些时候有人给了我这个解决方案,用于控制允许在UITextField中键入哪些字符:
我一直试图修改它,这样它就不会允许数字“1”成为输入UITextField的第一个数字,但我无法让它正常工作
非常感谢您的帮助。请参阅此答案
我将设置一个事件处理程序,如该示例中所述。然后是选择器中的if语句:
if([textField.text length] == 1 && [textField.text isEqualToString:@"1"]){
//Do something.
}
希望这有助于看到这个答案
我将设置一个事件处理程序,如该示例中所述。然后是选择器中的if语句:
if([textField.text length] == 1 && [textField.text isEqualToString:@"1"]){
//Do something.
}
希望这有帮助我已经根据您的需要修改了您想要使用的示例,您可以查看它
-(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;
}
我已经根据您的需要修改了您想要使用的示例,您可以查看它
-(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;
}
斯威夫特
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
}
斯威夫特
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”,当我输入并尝试输入第二个数字时,应用程序崩溃并给我这个错误:范围或索引超出界限“@MartinR我实际上需要能够输入数字1,而不是输入uitextfield的第一个数字。之后的任何地方都可以。我已经编辑了我的帖子,也测试过了。。为我工作!:)如果1)您点击“删除”键(因为在这种情况下,
string
是空字符串,characterAtIndex:0
将崩溃),或者2)您使用复制/粘贴替换字段内容(因为在这种情况下,textField.text
不是空的)。现在情况好多了!请注意,如果([string hasPrefix:@“1”])…,则可以将字符检查简化为。这不起作用。我能够输入“1”,当我输入并尝试输入第二个数字时,应用程序崩溃并给我这个错误:范围或索引超出界限“@MartinR我实际上需要能够输入数字1,而不是输入uitextfield的第一个数字。之后的任何地方都可以。我已经编辑了我的帖子,也测试过了。。为我工作!:)如果1)您点击“删除”键(因为在这种情况下,string
是空字符串,characterAtIndex:0
将崩溃),或者2)您使用复制/粘贴替换字段内容(因为在这种情况下,textField.text
不是空的)。现在情况好多了!请注意,如果([string hasPrefix:@“1”])…
,则可以将字符检查简化为。