UITextFields 中联系信息的快捷方式或自动填充

Shortcuts or autofill for contact info in UITextFields

当我在 iOS 中使用 Safari 时,我点击了一个要求我输入姓名和地址的表单,我在键盘区域获得了快捷键。例如,这是焦点位于名字字段时的键盘。我可以点击 "Robert" 而不是输入名称。

姓氏、phone、电子邮件、邮政编码的字段也会发生类似的情况。

我可以在原生 iOS 应用程序和 UITextField 中获得类似的东西吗?有没有办法标记一个字段,以便键盘提供这些快捷方式建议?

您可以通过设置 UITextFieldautocorrectionType 打开或关闭它。 autocorrectionType 的默认值为 UITextAutocorrectionTypeDefault 。这意味着您无需执行任何操作,默认情况下会显示。

UITextAutocorrectionTypeYes; // Turn on

UITextAutocorrectionTypeDefault; // Turn on

UITextAutocorrectionTypeNo; // Turn off

但除了设置autocorrectionType值外,您还需要确保设备Keyboards Setting中的Predictive已开启。如果 Predictive 关闭,即使您将 autocorrectionType 更改为 UITextAutocorrectionTypeYes,也不会显示建议。

更新

您可以更改 textContentType 以选择显示建议的类型。建议来自 Contacts。例如,您想要 phone 建议

textField.textContentType = UITextContentTypeTelephoneNumber;

请注意,如果您的屏幕上有电子邮件和密码,有时本机钥匙串检测会覆盖 textContentType=email,因此使用 textContentType 的自动填充将停止对电子邮件字段起作用。对于像 "create account" 这样的东西,他们在钥匙串中可能没有现有凭据,最好禁用钥匙串。解决这个问题

要禁用钥匙串,只需执行以下操作:passwordTextField.textContentType = @"";

然后电子邮件自动填充应该再次工作: emailTextField.textContentType = UITextContentTypeEmail;

对于 iOS 13,我发现仅当您设置 所有 3 以下属性时才会启用电子邮件建议:

emailTextField.textContentType = .emailAddress
emailTextField.keyboardType = .emailAddress
emailTextField.autocorrectionType = .yes

您可以通过编程方式或通过情节提要来完成。

我在 iOS 13.2 中的观察是,我禁用了钥匙串设置中的 Auto-fill 选项。 然后它开始建议电子邮件 与

emailTextField.textContentType = .emailAddress