UITextFields 中联系信息的快捷方式或自动填充
Shortcuts or autofill for contact info in UITextFields
当我在 iOS 中使用 Safari 时,我点击了一个要求我输入姓名和地址的表单,我在键盘区域获得了快捷键。例如,这是焦点位于名字字段时的键盘。我可以点击 "Robert" 而不是输入名称。
姓氏、phone、电子邮件、邮政编码的字段也会发生类似的情况。
我可以在原生 iOS 应用程序和 UITextField
中获得类似的东西吗?有没有办法标记一个字段,以便键盘提供这些快捷方式建议?
您可以通过设置 UITextField
的 autocorrectionType
打开或关闭它。 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
当我在 iOS 中使用 Safari 时,我点击了一个要求我输入姓名和地址的表单,我在键盘区域获得了快捷键。例如,这是焦点位于名字字段时的键盘。我可以点击 "Robert" 而不是输入名称。
姓氏、phone、电子邮件、邮政编码的字段也会发生类似的情况。
我可以在原生 iOS 应用程序和 UITextField
中获得类似的东西吗?有没有办法标记一个字段,以便键盘提供这些快捷方式建议?
您可以通过设置 UITextField
的 autocorrectionType
打开或关闭它。 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