电话号码的 UITextField

2023-12-03

我想知道如何格式化我用于电话号码的文本字段(即像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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电话号码的 UITextField 的相关文章

  • isAvailableForServiceType 总是返回 true?

    简单的一行代码 NSLog Checking on Facebook d Checking on Twitter d SLComposeViewController isAvailableForServiceType SLServiceTy
  • Google 地图信息窗口根据内部内容调整大小

    我正在使用此方法创建自定义信息窗口 UIView mapView GMSMapView mapView markerInfoWindow GMSMarker marker基于UIStoryboard使用自动布局 我预计一些内部视图将被调整大
  • 如何在 sqlite3 数据库中存储音频文件并在 iphone 中播放它们?

    我想在数据库中存储音频文件 任何支持 mp3 wav 和 iphone 的格式 并在 iPhone 上播放它们 知道如何做到这一点吗 我不知道为什么你想将音频文件存储在 SQL 数据库中 但 sqlite3 支持 BLOB 因此 将它们存储
  • Objective-C 选项卡设置和空白样式

    Apple 的 Objective C 文档 参考资料和生成的代码似乎与他们的编码风格完全不一致 我无法确定 Objective C 和 Cocoa 源代码的 首选 样式 如果存在 这是我到目前为止遇到的情况 选项卡设置 Xcode 的默认
  • UIImage 数据始终处于横向模式

    似乎当我用相机以肖像模式拍照时 UIImage具有正确的尺寸 长宽比 1536x2048 3 4 和方向 右 导出到文件 带有UIImage AsPNG Save 它始终以横向模式显示 2048x1536 4 3 这是真的吗 还是我做错了什
  • clang 编译器从相同的源生成不同的目标文件

    我有一个简单的 hello world Objective C 库 hello m import
  • UIEdgeInsets 定位文本/图像问题

    我尝试做一个UIButton图像位于文本上方 所以我使用以下代码 UIButton btn UIButton buttonWithType UIButtonTypeCustom btn frame CGRectMake x y 140 14
  • OpenCV 完美识别物体

    我有一个应用程序 我想一次跟踪 2 个在图片中相当小的对象 该应用程序应该在 Android 和 iPhone 上运行 因此算法应该是高效的 对于我的客户来说 如果我们提供一些模式以及附加到要跟踪的对象的软件 以获得易于识别的目标 那就完全
  • NSPopUpButton、绑定和缩短的寿命

    我试图了解使用 NSPopUpButton 是多么困难 它无疑是 Cocoa 中最难编程的用户元素 至少就我而言是这样 我想到的用例如下 我有一个名为 Port 的类 代表串行端口 属性中有一个名称字段 在 NSPopUpButton 中
  • UITableView/UITableViewCell 点击事件响应?

    我一直在谷歌搜索 试图弄清楚当点击 UITableView 中的一行 或单元格 时会调用什么类型的事件句柄 但一直无法弄清楚 我试图在点击单元格时更改其图像属性 Thanks 点击表行时有两个可能的事件 选择该行和附件视图 通常是 更多详细
  • IOS:从故事板中的原型单元中触发多个segues

    有没有办法将原型单元连接到不同的场景 并在 didSelectRowAtIndexPath 方法上调用 self PerformSegueWithIdentifier NAMEOFTHESEGUE sender self 我似乎无法将多个
  • 大端还是小端? [复制]

    这个问题在这里已经有答案了 可能的重复 如何检查系统是大端还是小端 https stackoverflow com questions 4181951 how to check whether a system is big endian
  • 如何用动画隐藏/显示 UISearchBar 范围栏?

    我想在表格为空时 在搜索栏第一次编辑之前 不显示范围栏 在编辑时不显示范围栏 最后在编辑完成时显示它 我了解 UISearchBarDelegate 协议 但我不知道如何用动画显示 隐藏范围栏 我知道 UISearchBar 有setSho
  • jquery mobile 和 iphone - 页面底部的空白区域

    我有一个 jquery 移动网页 它在桌面浏览器和 Android 上看起来都不错 但在 iPhone 的 safari 中 我在页面底部有一个奇怪的空白 它看起来像是 ui 页面的最小高度的问题 因为空白区域与 safari 的标题栏 u
  • 在代码中创建时 UISearchDisplayController 不工作?

    我正在开发一个选项卡栏应用程序 其中一个选项卡有一个连接到 UISearchBar 的 UISearchDisplayController 所有这些都已连接到 NIB 中并且正在工作 当我点击搜索栏时 范围 和 取消 按钮会飞入等 并且搜索
  • 具有 URL 样式格式的 NSTextField

    我一直在尝试让 NSTextField 识别 URL 并且一般来说我的代码可以工作 我按照苹果的说明进行操作这一页 http developer apple com library mac qa qa1487 关于如何使用 hyperlin
  • iPhone SDK 3.0 和 symbolicatecrash 相处不好?

    更新 我已经重新安装了 Snow Leopard 全新安装 完全清除了我现有的 Leopard 安装 同样的问题仍然存在 我已经尝试了多个版本的 symbolicatecrash 来解析崩溃报告中的符号 从 Apple 提供的版本 到 Al
  • 在特定点停止 CABasicAnimation

    我正在使用创建的旋转动画CABasicAnimation 它旋转一个UIView超过2秒 但我需要能够阻止它UIView被感动了 如果我删除动画 视图将处于与动画开始之前相同的位置 这是我的动画代码 float duration 2 0 f
  • 如何在 Objective C 中创建 2D NSArray 或 NSMutableArray?

    我想问一下客观C的问题 我想在 Objective C 中创建一个 2D NSArray 或 NSMutableArray 我该怎么办 数组中存储的对象是NSString 非常感谢你 这当然是可能的 但我认为值得注意的是 NSArray 只
  • 将 NSData 转换为 JSON

    我有一个NSData对象 我需要将其转换为NSDictionary object NSData data 现在我需要将其转换为NSDictionary 我如何以编程方式执行此操作 注意 我保存后NSData to the NSDiction

随机推荐