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

iOS验证码自动填充失效:设置.oneTimeCode后无法识别SMS验证码

一次性验证码输入框自动填充失效问题

我自定义了继承自UITextField的MaskedTextField用于接收一次性验证码,代码如下:

let codeTextField: MaskedTextField = { // inherits from UITextField
    let textField = MaskedTextField()
    textField.textContentType = .oneTimeCode
    textField.textColor = .mineShaft
    textField.tintColor = .mineShaft
    textField.autocapitalizationType = .none
    textField.placeholderCharacter = "_"
    textField.patternMask = "___ ___"
    textField.autocorrectionType = .no
    textField.keyboardType = .numberPad
    textField.font = UIFont.poppinsMedium.withSize(17)
    textField.placeholder = "settings.code.title".localized
    return textField
}()

但收到短信验证码后,该输入框的自动填充功能并未生效,收到的短信内容如下:

Verification code to PLZ from 12-10-2023 14:33:20. SMS code: 678826
@partner-portal.pre-prod.plz.pl #678826

可能的原因及解决建议

原因1:掩码格式冲突

输入框设置了patternMask = "___ ___",将6位验证码拆分为3+3的分段格式。iOS的一次性验证码自动填充基于完整的验证码匹配逻辑,分段掩码会让系统无法识别输入框可接收完整的6位验证码,从而导致填充失败。

解决建议:

  • 先移除patternMask配置,测试原生UITextField是否能正常自动填充,确认是否为掩码导致的问题。
  • 若需要保留分段显示,改用多个独立的UITextField(例如两个3位输入框),每个都设置contentType = .oneTimeCode,系统会自动完成填充。

原因2:自定义TextField兼容性问题

MaskedTextField作为UITextField的子类,若重写了text属性或shouldChangeCharactersIn等输入处理方法,可能破坏了原生oneTimeCode contentType的识别逻辑,拦截了系统的自动填充事件。

解决建议:

  • 检查自定义MaskedTextField的代码,注释掉输入限制、文本格式化等自定义逻辑,测试自动填充是否恢复正常。
  • 若必须保留自定义逻辑,确保在处理输入时不对系统自动填充的内容做拦截,允许完整的验证码字符串输入后再进行分段格式化。

原因3:关联域名不匹配

短信中的@partner-portal.pre-prod.plz.pl需要与App配置的关联域名完全匹配。若苹果开发者后台未配置对应的关联域名,或Info.plist中associated-domains条目不正确,系统无法识别该短信属于当前App,不会触发自动填充。

解决建议:

  • 登录苹果开发者后台,检查App的Associated Domains配置,确保添加了applinks:partner-portal.pre-prod.plz.pl(或对应类型的域名标识)。
  • 核对App的Info.plist文件,确认associated-domains条目包含上述域名,同时相关网络配置允许该域名的访问。

原因4:输入规则拦截

虽然设置keyboardType = .numberPad本身没问题,但如果自定义TextField限制了输入字符的数量或格式,可能在系统自动填充时直接拦截了内容输入。

解决建议:

  • 检查自定义代码中是否有字符长度限制,确保允许6位数字完整输入后再进行分段处理。
  • 测试在关闭掩码逻辑的情况下,输入框是否能正常接收6位数字的自动填充。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 18:53:19