You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 14.7 手机号自动填充点击后replacementString为空问题咨询

问题产生原因

这是iOS 14~15.0正式版之间的系统级兼容问题,具体逻辑如下:

  • 当用户点击键盘顶部的手机号自动填充建议时,iOS 14.7系统对UITextField的输入回调做了特殊处理,调用shouldChangeCharactersIn代理方法时,传入的replacementString参数会被置空,同时range参数会被置为NSRange(location: 0, length: 0)。
  • 如果你在shouldChangeCharactersIn代理方法中实现了输入内容非空校验、非法字符过滤等逻辑,遇到空的replacementString时大概率会直接返回false,直接打断了系统的自动填充写入流程,导致手机号无法写入文本框。
  • 不实现该代理方法时,系统会跳过所有自定义校验逻辑,直接将手机号写入文本框,因此自动填充功能正常。

兼容修复方案

在shouldChangeCharactersIn代理方法的开头新增自动填充场景判断即可:

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    // 适配iOS14+自动填充手机号场景
    if string.isEmpty && range.location == 0 && range.length == 0 {
        return true
    }
    // 原有逻辑保持不变
    // ...
}

内容的提问来源于stack exchange,提问作者Alisher Iglymov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 19:54:01