Предложение клавиатуры iOS 12 OTP

Пытаюсь реализовать передачу одноразового кода из СМС в поле над клавиатурой, как на картинке.

Но почему-то поле над клавиатурой не отображается.

Код:self.valueTextField.textContentType = UITextContentTypeOneTimeCode;

Иерархия пользовательского интерфейса:

+UIView

  • CustomContentView
  • UIImageView
  • UITextField — значениеTextField
  • UITextFieldContentView

Я прочитал эти материалы: soQuestion и документы Apple и увидел предупреждение:

Если вы используете настраиваемое представление ввода для текстового поля ввода кода безопасности, iOS не может отобразить необходимый пользовательский интерфейс автозаполнения.

... но я не понимаю, что подразумевается под пользовательским представлением ввода.

Также у меня есть категория для UITextField. Может ли это повлиять на работу?

Буду рад любым идеям, спасибо!


person redisky    schedule 08.10.2018    source источник


Ответы (2)


Хорошо. Это то, что я смог узнать. Что касается кода, то достаточно того, что я описал выше. Дополнительных настроек на клиенте не требуется. Но нужно обратить внимание на текст СМС-сообщения. В качестве примера я прикрепил два сообщения.

first pic В первом сообщении наш код определяется системой как номер телефона. Мы даже можем вызвать его, если нажмем на него. Но зачем нам вызывать одноразовый код? :)

second pic На втором изображении код определен как одноразовый, как раз то, что нам нужно. Если мы нажмем на него, система предложит скопировать его в буфер обмена.

В чем разница? К сожалению, не совсем понятно, по какому правилу разбирается текст в СМС. Но мы можем проверить ваш текст следующим образом:

Если вы установили свойство textContentType для своего текстового поля и у вас ничего не работает, первое, что вам нужно проверить, это правильно ли операционная система определяет код. Для этого просто зайдите в приложение сообщений и проверьте код:

  1. синий цвет шрифта с подчеркиванием - система не распознала одноразовый код.
  2. черный цвет шрифта (по умолчанию) с серым подчеркиванием - все в порядке!

В конце, в первом случае, следует проверить текст сообщения на наличие неверных символов.

PS Буквально пара примеров правильных и неправильных СМС:

  • SMS-код: 12345£ правильный
  • SMS-код: 12345$ правильный
  • SMS-код: 12345 № правильный
  • SMS-код №1: 12345 неверный
person redisky    schedule 15.10.2018

Меня зацепил тот факт, что на телефоне было отключено «Автозаполнение паролей». Кажется, что он должен быть включен, чтобы эта функция работала.

person AntDC    schedule 21.10.2019