iOS开发中苹果输入手机号变用户的名字
发布时间 - 2026-01-11 01:16:12 点击率:次今天我们的用户输入手机号之后变成了用户的名字,没办法获取验证码,因为手机格式不对。我还是头一次遇到这样的事情。
1.文本替换
遇到这种事情肯定去百度啊,发现还真有人和我遇到相同的情况,原来这个用户在设置-》通用-》键盘-》文本替换把自己的手机号设置自己的名字了,这样只要在UITextField中输入自己的手机号,输入完就会变成自己的名字,出现上图的情况。
其实这个功能还是满好玩的,不过用户要是把自己的手机号设置文本替换了,那么在APP里注册就会出现问题了。当时我就想是不是微信也这样啊,
看来微信已经解决了这个问题,他手机号中间加了两个空格,而文本替换是不允许加空格的,所以可以正常完成登录。这里不得不为微信的工程师们点赞啊!不过淘宝更厉害,没有加空格,也没有进行文本替换,真是厉害啊。我又去看了其他App,基本上都是用空格来防止文本替换的,但是也有一些注册登录不了的,有兴趣的可以去尝试。
2.用空格防止文本替换
#pragma mark - UITextFieldDelegate
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == _txtUserName) {
// 12312345678-> 123 1234 5678
if (range.location == 3 || range.location == 8) {
textField.text = [textField.text stringByAppendingString:@" "];
}
// 手机号最多输13位 包含两个空格,防止文本替换
if(range.location >= 13){
return NO;
}
}
return YES;
}
这样就成功的防止文本替换了,因为文本替换不能包含空格。但是我又发现删除不了了,就是当删除到空格的时候就不能继续删除了。难道是数字键盘里不能删除空格???后来我分析代码发现当我删除到空格的时候,就会自动帮我在后面再加上一个空格,这样我就永远把空格删除不了了。所以我要区分只有在输入的时候添加空格,删除到123 1234 5678的5时,自动把5前面的空格去掉。
3.区分输入和删除
当UITextField删除的时候执行- (void)deleteBackward;方法,这个方法在UIKeyInput协议中。那这就好办了,自定义UITextField的,重写- (void)deleteBackward;,这个方法一执行,就发通知,或者走代理,都可以。后来我发现这有点麻烦,我还要自定义,发通知/代理,太麻烦了。所以我就想通过监测UITextField的location来区分输入或删除。
#pragma mark - UITextFieldDelegate
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == _txtUserName) {
// 删除
if (_lastLocation > range.location) {
if (range.location == 9 || range.location == 4) {
// 删除到空格后一位的时候,自动把空格也去掉
textField.text = [textField.text substringToIndex:range.location];
}
_lastLocation = range.location - 1;
return YES;
}else {
// 输入
if (range.location == 3 || range.location == 8) {
textField.text = [textField.text stringByAppendingString:@" "];
}
}
_lastLocation = range.location;
// 手机号最多输13位 包含两个空格,防止文本替换
if(range.location >= 13){
return NO;
}
}
return YES;
}
其实用户一多,对开发者来说成长会非常快,因为什么情况都会遇到,我们就在解决问题中成长。
以上所述是小编给大家介绍的iOS开发中苹果输入手机号变用户的名字,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# ios
# 输入手机号变用户名字
# 自己的
# 就会
# 最多
# 自定义
# 小编
# 我就想
# 都是
# 我就
# 我要
# 也有
# 就在
# 看了
# 在此
# 和我
# 帮我
# 当我
# 我又
# 这个问题
# 没办法
# 这就
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
黑客如何通过漏洞一步步攻陷网站服务器?
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Laravel怎么为数据库表字段添加索引以优化查询
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
EditPlus中的正则表达式实战(6)
Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
如何用好域名打造高点击率的自主建站?
html5的keygen标签为什么废弃_替代方案说明【解答】
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
新三国志曹操传主线渭水交兵攻略
奇安信“盘古石”团队突破 iOS 26.1 提权
如何在腾讯云服务器快速搭建个人网站?
Linux虚拟化技术教程_KVMQEMU虚拟机安装与调优
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
Laravel如何处理和验证JSON类型的数据库字段
iOS UIView常见属性方法小结
手机网站制作与建设方案,手机网站如何建设?
如何在阿里云服务器自主搭建网站?
javascript基于原型链的继承及call和apply函数用法分析
如何彻底卸载建站之星软件?
利用python获取某年中每个月的第一天和最后一天
如何在腾讯云服务器上快速搭建个人网站?
Laravel如何配置和使用缓存?(Redis代码示例)
php增删改查怎么学_零基础入门php数据库操作必知基础【教程】
如何用腾讯建站主机快速创建免费网站?
详解jQuery中的事件
网站页面设计需要考虑到这些问题
悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤
如何在Windows虚拟主机上快速搭建网站?
网站图片在线制作软件,怎么在图片上做链接?
网站制作报价单模板图片,小松挖机官方网站报价?
Laravel如何生成URL和重定向?(路由助手函数)
Laravel怎么调用外部API_Laravel Http Client客户端使用
java ZXing生成二维码及条码实例分享
linux写shell需要注意的问题(必看)
Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康
Android利用动画实现背景逐渐变暗
C++时间戳转换成日期时间的步骤和示例代码
如何为不同团队 ID 动态生成多个非值班状态按钮
如何用JavaScript实现文本编辑器_光标和选区怎么处理
如何打造高效商业网站?建站目的决定转化率
图册素材网站设计制作软件,图册的导出方式有几种?
Laravel如何生成和使用数据填充?(Seeder和Factory示例)
浅述节点的创建及常见功能的实现
音响网站制作视频教程,隆霸音响官方网站?
Swift中switch语句区间和元组模式匹配
JavaScript如何实现倒计时_时间函数如何精确控制
Linux安全能力提升路径_长期防护思维说明【指导】
JavaScript中的标签模板是什么_它如何扩展字符串功能

