Here's the documentation on UITextField's textContentType property:
使用此属性为键盘和系统提供有关用户输入内容的预期语义含义的信息。例如,您可以为用户填写的文本字段指定
UITextContentTypeEmailAddress
以接收电子邮件确认。当您提供有关您希望用户在文本输入区域输入的内容的此信息时,系统可以在某些情况下自动选择合适的键盘并改进键盘更正并主动与其他文本输入机会集成。由于应尽可能具体地标识每个文本输入区域的预期语义含义,因此不能将一个
textContentType
属性的多个值组合在一起。有关可以使用的值,请参阅Text Content Types;默认情况下,此属性的值为nil
。
这看起来非常简单,但我无法弄清楚如何让它实际做任何事情。我创建了一个简单的演示应用程序,添加了一个文本字段,并设置了self.textField.textContentType = UITextContentTypeEmailAddress
。然后我在带有iOS 10.0.1的iPhone 7上运行它。
至少我希望这能自动选择电子邮件键盘,而不必明确设置它。它没有 - 我在我的iPhone上获得标准键盘。
我还希望它能够显示我自己的QuickType建议的电子邮件地址。我已经看到这种情况发生在其他地方 - 如果我在Safari中并且它检测到我正在编辑电子邮件字段,它会显示我的家庭和工作电子邮件地址作为建议。同样,它在这里没有这样做,即使文档表明应该这样做。
即使我也将keyboardType
设置为UIKeyboardTypeEmailAddress
,我仍然无法获得我期望的QuickType建议。
There's a WWDC talk that discusses this new capability,但除了设置此单一属性之外,从来没有任何建议你需要做任何事情。
我是否错过了一些步骤,或者这实际上并不是我所期待的那样?
答案 0 :(得分:9)
这最终在iOS 11中的第三方应用程序中得到支持。我有一个使用iOS 11 beta 1上安装的iOS 10.3 SDK构建的应用程序。它包含textContentType = UITextContentTypeEmailAddress
的字段,这些正确地建议了两个电子邮件地址我的联系卡。我还有textContentType = UITextContentTypePostalCode
字段,正确建议我的邮政编码。
除现有类型外,iOS 11还添加了UITextContentTypeUsername
和UITextContentTypePassword
,可用于支持Password AutoFill for Apps。
答案 1 :(得分:4)
仅供参考(因为我几乎无法在谷歌和苹果文档中找到它):
在新的ios中苹果提供了一些新功能(看图像)。 以下是关于他们的description和wwdc。
答案 2 :(得分:1)
我一直在努力尝试通过在UITextField上指定.textContentType
来使“自动完成”工作。看来好不容易,我放弃了很多次。我今天重新审视了这个问题,并学到了一些技巧(更好)。
•将.spellCheckingType
和.autocorrectionType
设置为.no
。当这些属性是其他属性时,自动完成功能将不起作用。更糟糕的是,这些属性的默认值为.default
,因此,不完全设置它们不会导致自动完成。
•keyboardType = .numberPad
似乎根本不支持自动完成。当我切换到.numbersAndPunctuation
时,电话号码的自动完成功能开始起作用。
完成所有操作,有时文本字段每次仍然无法使用自动完成功能。如果我进入另一个字段,然后回到有问题的字段,则自动完成工作。对此没有任何解释,我还没有发现一些神秘的肉。但是上面的提示使我更加接近...”