Как я могу получить свойство UITextField textContentType, чтобы что-нибудь сделать?

Здесь документация по свойству свойства UITextField textContentType:

Используйте это свойство, чтобы предоставить клавиатуре и системной информации о ожидаемом семантическом значении для содержимого, которое вводит пользователь. Например, вы можете указать UITextContentTypeEmailAddress для текстового поля, которое пользователи заполняют, чтобы получить подтверждение по электронной почте. Когда вы предоставляете эту информацию о содержимом, которое, как вы ожидаете, пользователи будут вводить в текстовую область, система может в некоторых случаях автоматически выбирать подходящую клавиатуру и улучшать корректировки клавиатуры и проводить активную интеграцию с другими возможностями ввода текста.

Поскольку ожидаемое семантическое значение для каждой области ввода текста должно быть идентифицировано как можно более конкретно, вы не можете комбинировать несколько значений для одного свойства textContentType. Для возможных значений, которые вы можете использовать, см. Типы текстового содержимого; по умолчанию значение этого свойства равно nil.

Это кажется довольно простым, но я не могу понять, как это сделать на самом деле. Я создал простое демо-приложение, добавил текстовое поле и установил self.textField.textContentType = UITextContentTypeEmailAddress. Затем я запустил его на iPhone 7 с iOS 10.0.1.

По крайней мере, я ожидал, что это автоматически выберет клавиатуру электронной почты, не указывая явно ее. Это не так - я получаю стандартную клавиатуру на своем iPhone.

Я также ожидал, что он покажет мои собственные адреса электронной почты для предложений QuickType. Я видел, как это происходит в другом месте - если я в Safari, и он обнаруживает, что я редактирую поле электронной почты, он показывает мои домашние и рабочие адреса электронной почты в качестве предложений. Опять же, это не делает этого здесь, даже если документация предполагает, что он должен.

Даже если я также установил keyboardType в UIKeyboardTypeEmailAddress, я все равно не получаю предложения QuickType, которые я ожидал.

Там говорится о WWDC, в котором обсуждаются эти новые возможности, но никогда не было никаких предположений о том, что вам нужно что-то делать, кроме как установить это единственное свойство.

Я пропустил какой-то шаг, или это на самом деле не делает то, что я ожидаю?

Ответы

Ответ 1

Наконец, это поддерживается сторонними приложениями в iOS 11. У меня есть приложение, построенное с использованием SDK iOS 10.3, установленного на бета-версии iOS 11. Оно включает в себя поля с textContentType = UITextContentTypeEmailAddress, и они правильно предлагают два адреса электронной почты на моем контакте карта. У меня также есть поля с textContentType = UITextContentTypePostalCode, которые правильно предлагают мой почтовый индекс.

В дополнение к существующим типам, iOS 11 также добавляет UITextContentTypeUsername и UITextContentTypePassword, которые могут использоваться для поддержки Password AutoFill для приложений.