原生UITextField安全文本输入强制英语(美国)键盘

Thi*_*b L 17 keyboard uitextfield ios swift

我有一个非常简单的登录页面(登录名+密码).

我的用户是法国人,所以他们的键盘是法语(azerty).

从iOS 12开始,当他们点击安全的密码文本字段时,键盘会切换到英文(qwerty),即使他们的设备上没有安装此键盘.此外,如果他们没有安装此键盘,则无法切换回键盘.

我发现如果我停用安全文本输入,则问题不会显示出来.

我还尝试以编程方式设置isSecureTextEntry,并显示错误.

我正在添加两个屏幕截图,每个文本字段一个.

非常感谢你的时间和帮助.

在此输入图像描述

在此输入图像描述

Nic*_*ico 10

我有同样的问题,就我而言,此错误仅在注册屏幕上出现。

原因是Apple检查了类/函数/参数的名称,以确定(具有启发式)它是否是登录/注册屏幕,并自动激活自动填充密码。通过在我的代码中将“ register”替换为“ Patate”,解决了该问题。

我使用带有2个文本字段(带有安全性文本输入)和名为“ RegisterViewController”的视图控制器的示例应用程序来重现此问题。与“ PatateViewController”,我没有问题。

此外,我在控制台中遇到此错误:[自动填充]由于错误而无法显示应用程序bundleID:***的自动强密码:错误:iCloud钥匙串已禁用

来源:https : //developer.apple.com/documentation/security/password_autofill

希望您能找到一种比重命名代码更好的方法。

  • 我对此表示赞同,“ PatateViewController”显然是您可以赋予ViewController更好的名称 (11认同)

Mar*_*tin 5

我最近在我们的应用程序中出现了同样的问题。该问题与Apple 的PasswordAutofill的新功能有关。

要绕过此问题,您可以在安全文本字段上应用此小段代码

    if #available(iOS 12.0, *) {
        tfPassword.textContentType = .oneTimeCode
    }
Run Code Online (Sandbox Code Playgroud)

这应该可以解决此错误。这也应该解决此错误:

[自动填充]无法显示应用程序包ID:***的自动强密码:由于错误:iCloud钥匙串已禁用

附:您也可以将此新功能添加到您的应用中。这是指向文章的链接,解释了如何实施此新功能的过程有关如何 实施密码自动填充的解释

希望能帮助到你。


Thi*_*b L 0

这确实是一个 iOS 错误 => 在 iOS 12.1 中得到纠正

  • iOS 13+ 中仍然存在 (3认同)
  • 我们在 iOS 12.1 上仍然存在问题 (2认同)
  • 仍然存在,iOS 12.2 (2认同)
  • iOS 14+ 中仍然存在 (2认同)