iOS11 通讯录手机号拷贝Bug

最近,测试反馈一个bug:iOS11系统,从手机通讯录拷贝一个手机号码到输入框后,手机格式校验失败。
跟进了一下,发现拷贝后的号码信息前后各加了一个字符,如下:



前面增加了:\U202d
后面增加了:\U202c
这两个字符在UI上是不展示的,所以看起来像是开发人员正则表达式的锅。
解决方案是在格式校验前,先把数字之外的信息加以过滤,代码如下:

+ (NSString *)clearNumberForIOS11:(NSString *)str {
    if ([str isKindOfClass:[NSString class]]) {
        return [[str componentsSeparatedByCharactersInSet:
                 [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet]] componentsJoinedByString:@""];
    } else {
        return str;
    }
}

另外一篇文章的作者也发现了这个问题:
IOS 11 通讯录手机号「隐形字符」的 Bug,Apple 真的不打算修复了吗?

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容