【发布时间】:2013-02-20 13:31:56
【问题描述】:
我正在尝试验证在 UITextfield 中输入的 10 位电话号码。实际上我需要 xxx-xxx-xxxx 格式的数字。所以我不希望用户删除 - 符号。
我尝试使用此处提到的各种方法:Detect backspace in UITextField,但它们似乎都不起作用。
我目前的做法是:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (range.location == 12) {
UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Invalid Input" message:@"Phone number can contain only 10 digits." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[testTextField resignFirstResponder];
return NO;
}
if (range.length == 0 && [blockedCharacters characterIsMember:[string characterAtIndex:0]]) {
UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Invalid Input" message:@"Please enter only numbers.\nTry again." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return NO;
}
if (range.length == 0 &&
(range.location == 3 || range.location == 7)) {
textField.text = [NSString stringWithFormat:@"%@-%@", textField.text, string];
return NO;
}
if (range.length == 1 &&
(range.location == 4 || range.location == 8)) {
range.location--;
range.length = 2;
textField.text = [textField.text stringByReplacingCharactersInRange:range withString:@""];
return NO;
}
return YES;
}
对此有什么想法吗?
非常感谢。
【问题讨论】:
-
投票关闭,因为上述问题中的解决方案确实有效。但是,您实际上并不想实现退格,您只想检查文本字段的内容。
-
你为什么不让用户输入他想要的数字,然后在编辑结束应用你的格式后修改它?
-
我不得不问:“但它们似乎都不起作用”是什么意思?您的代码的最后一部分看起来很合理。您看到的问题是什么?
-
是的,apascua 建议的解决方法似乎对我有用。
标签: ios uitextfield