我在iOS 11中成功实现了自动填充功能,用于存储用户名和密码建议。
我的登录视图控制器中有两个文本字段,一个用于电子邮件,一个用于密码。内容类型定义如下:
电子邮件/用户名文本字段配置
密码文本字段配置
这曾经在iOS 11上可以正常工作,但是将我的开发iPad升级到iOS 12后,该应用会建议发送电子邮件给用户名字段,并且在编辑密码字段时会发生以下情况:
在我的创建帐户视图控制器中,我有3个文本字段:电子邮件,密码,重复密码。它们的内容模式设置如下:
minlength:8;
minlength:8;
在编辑电子邮件地址字段时,它会正确建议一个电子邮件地址。但是,对于“密码”和“重复密码”字段,它建议使用存储的密码,而不建议使用新密码。
new password
,将创建帐户密码字段设置为password
none
进行登录并创建帐户字段,以便AutoFill可以尝试自动处理它
您知道我需要更改什么以便存储的用户名和密码建议再次在iOS 12中起作用吗?
谢谢!
按照下面的@kralex的要求,这是情节提要中登录视图控制器的视图层次结构:
...在设备上:
答案 0 :(得分:4)
Apple正在做一些启发,以最好地猜测您可能需要什么:自动填充或新密码。但是在某些情况下,它可能会失败。
您的问题与“创建帐户按钮”有关。它使系统认为这是一个注册表单。
最简单的解决方法:用UILabel替换注册UIButton并添加tapRecognizer来处理点击。
答案 1 :(得分:2)
我遇到了类似的问题,发现Apple的启发式方法正在使用视图控制器的类名来确定是建议使用新密码还是使用现有密码。似乎即使我在textContentType
上设置了正确的UITextField
,它仍然会使用控制器的名称。
我的UIViewController
在同一屏幕上已注册并登录,但控制器名为RegistrationViewController
。我将其更改为LoginViewController
进行测试,发现登录部分开始工作,但是注册位的行为就像是登录!即使设置了正确的textContentType
,也是如此!
我不得不重新命名UIViewController
,但这并不意味着注册或登录后才能真正尊重我的textContentType
。糟透了真可怕。
我可以想像,这至少是/正在发生的部分原因是因为您将Welcome
一词作为视图控制器的开头,听起来似乎令人难以置信。
顺便说一句,我尝试了RegistrationLoginViewController
(它选择了注册设置)和LoginRegistrationViewController
(它选择了登录设置),但都没有用。如果您想将两者都放在同一个控制器上,则必须避免使用Apple的启发式技术。