我需要在文本字段中输入手机号码.
我需要显示这种格式的手机号码123-456-7890.
例如:1234567890是我的手机号码,而我在文本字段中输入此手机号码,
对于我需要放置的前三位数 - 再经过3位数后我需要放置 - .
如果我输入123然后自动放置 - 在文本字段中,在456之后,不需要再放置4位数.
类似于以货币格式显示文本.
但是从文本字段中获取文本时我需要获取手机号码 - 如1234567890,而不是123-456-7890.
我认为现在我的问题很清楚,如果不是,请加上评论.
提前谢谢你.
只是为了澄清:当用户在UITextField中输入电话号码时,您希望它在适当的位置自动插入破折号.
答案是使用UITextFieldDelegate协议.
1)将控制器对象设置为UITextField的委托.
2)您将在协议中找到以下方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
Run Code Online (Sandbox Code Playgroud)
每次在文本字段中发生字符更改时,都会调用此方法.
3)您希望实施的强大程度取决于您.您可以简单地对当前字符进行计数,并在3和6个字符后插入破折号.明智的做法是拒绝任何非数字字符.
这是一个示例实现.我们基本上手动接管字段编辑 - 在相应的字符串长度后插入破折号并确保用户只能输入数字:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSCharacterSet *numSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789-"];
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
int charCount = [newString length];
if ([newString rangeOfCharacterFromSet:[numSet invertedSet]].location != NSNotFound
|| [string rangeOfString:@"-"].location != NSNotFound
|| charCount > 12) {
return NO;
}
if (charCount == 3 || charCount == 7) {
newString = [newString stringByAppendingString:@"-"];
}
textField.text = newString;
return NO;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3899 次 |
| 最近记录: |