在iOS 12中自动填充用户名和密码

Lin*_*rth 7 autofill ios swift ios12

我在iOS 11中成功实现了AutoFill存储的用户名和密码建议
.我的登录视图控制器中有两个文本字段,一个用于电子邮件,一个用于密码.内容类型定义如下:


电子邮件/用户名文本字段配置


密码文本字段配置

这曾经在iOS 11中运行得很好,但在将我的开发iPad升级到iOS 12之后,该应用建议用户名字段的电子邮件,并在编辑密码字段时发生以下情况:


在我的创建帐户视图控制器中,我有3个文本字段:电子邮件,密码,重复密码.他们的内容模式设置如下:

  • 电邮→电子邮件地址
  • 密码→新密码,规则: minlength:8;
  • 重复密码→新密码,规则: minlength:8;

编辑电子邮件地址字段时,它会正确建议电子邮件地址.但是,对于密码和重复密码字段,它建议存储密码,而不是建议新密码.


我尝试了什么

  • (不合逻辑地)翻转内容模式设置,因此登录密码字段设置为new password,并且创建帐户密码字段设置为password
    • 没有成功; 事实上,根本没有改变行为
  • 将内容模式设置none为登录和创建帐户字段,以便AutoFill可以尝试自动处理它
    • 没有成功; 事实上,根本没有改变行为

注意

  • 在服务器上正确设置了自动填充功能.创建帐户字段中建议的存储密码证明了这一点
  • 该功能仍在iOS 11 iPad上运行
  • 使用新用户名登录时,应用程序将要求用户将此用户名和密码添加到Keychain,即使在iOS 12上也是如此

知道我需要更改什么,以便存储的用户名和密码建议再次在iOS 12中工作?

谢谢!



编辑

根据下面@kralex的要求,这是故事板中登录视图控制器的视图层次结构:

......并在设备上:

kra*_*lex 4

Apple 正在采取一些启发式方法来最好地猜测您可能需要什么:自动填充或新密码。但在某些情况下它可能会失败。

就您而言,问题与“创建帐户按钮”有关。它使系统认为这是一个注册表单。

修复此问题的最简单选项:将注册 UIButton 替换为 UILabel,并添加 tapRecognizer 来处理点击。