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中的标签模板是什么_它如何扩展字符串功能