gpt4 book ai didi

iphone - 电话号码的 UITextField

转载 作者:IT老高 更新时间:2023-10-28 11:35:58 32 4
gpt4 key购买 nike

我想知道如何格式化用于电话号码的文本字段(例如 iPhone 上的“添加新联系人”页面。当我输入新手机时,例如 1236890987 会格式化它如 (123) 689-0987。)我已经将键盘设置为数字键盘。

最佳答案

这是我的解决方案.. 效果很好!实时格式化电话号码。注意:这是 10 位数的电话号码。目前它会自动将其格式化为 (xxx) xxx-xxxx.. 调整到您的内心喜悦。

首先在您的 shouldChangeCharactersInRange 中,您要收集电话文本字段的整个字符串并将其传递给验证/格式化函数。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString* totalString = [NSString stringWithFormat:@"%@%@",textField.text,string];

// if it's the phone number textfield format it.
if(textField.tag==102 ) {
if (range.length == 1) {
// Delete button was hit.. so tell the method to delete the last char.
textField.text = [self formatPhoneNumber:totalString deleteLastChar:YES];
} else {
textField.text = [self formatPhoneNumber:totalString deleteLastChar:NO ];
}
return false;
}

return YES;
}

这里是电话号码的格式。正则表达式可能会被清理一下。但我已经测试了这段代码一段时间,似乎通过了所有的铃铛。请注意,我们还使用此功能删除电话号码中的号码。在这里工作更容易一些,因为我们已经去掉了所有其他非数字。

 -(NSString*) formatPhoneNumber:(NSString*) simpleNumber deleteLastChar:(BOOL)deleteLastChar {
if(simpleNumber.length==0) return @"";
// use regex to remove non-digits(including spaces) so we are left with just the numbers
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"[\\s-\\(\\)]" options:NSRegularExpressionCaseInsensitive error:&error];
simpleNumber = [regex stringByReplacingMatchesInString:simpleNumber options:0 range:NSMakeRange(0, [simpleNumber length]) withTemplate:@""];

// check if the number is to long
if(simpleNumber.length>10) {
// remove last extra chars.
simpleNumber = [simpleNumber substringToIndex:10];
}

if(deleteLastChar) {
// should we delete the last digit?
simpleNumber = [simpleNumber substringToIndex:[simpleNumber length] - 1];
}

// 123 456 7890
// format the number.. if it's less then 7 digits.. then use this regex.
if(simpleNumber.length<7)
simpleNumber = [simpleNumber stringByReplacingOccurrencesOfString:@"(\\d{3})(\\d+)"
withString:@"($1) $2"
options:NSRegularExpressionSearch
range:NSMakeRange(0, [simpleNumber length])];

else // else do this one..
simpleNumber = [simpleNumber stringByReplacingOccurrencesOfString:@"(\\d{3})(\\d{3})(\\d+)"
withString:@"($1) $2-$3"
options:NSRegularExpressionSearch
range:NSMakeRange(0, [simpleNumber length])];
return simpleNumber;
}

关于iphone - 电话号码的 UITextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1246439/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com