iOS 12 OTP 键盘建议

iOS 12 OTP keyboard suggestion

我正在尝试将一次性代码从 SMS 传输到键盘上方的字段,如图所示。

但由于某种原因,键盘上方的字段没有显示。

代码:self.valueTextField.textContentType = UITextContentTypeOneTimeCode;

UI 层次结构:

+UI查看

我已经阅读了这些材料:soQuestion and apple docs,我看到了一个警告:

If you use a custom input view for a security code input text field, iOS cannot display the necessary AutoFill UI.

...但是我不明白自定义输入视图是什么意思。

我还有 UITextField 的类别。会不会影响工作?

我很乐意提供任何想法,谢谢!

好的。这是我能查到的。关于代码,我上面描述的就够了。不需要在客户端上进行其他设置。但是您需要注意短信的文本。例如,我附上了两条消息。

在第一条消息中,我们的代码被系统定义为一个phone数字。如果我们点击它,我们甚至可以调用它。但是为什么我们需要调用一次性代码呢? :)

在第二张图中,代码被定义为一次性的,正是我们所需要的。如果我们点击它,系统会提出将其复制到剪贴板。

有什么区别?不幸的是,在 SMS 中解析文本的规则并不完全清楚。但我们可以通过以下方式检查您的文本:

如果您将 属性 textContentType 设置为您的文本字段但没有任何效果,您首先需要检查的是操作系统是否正确确定了代码。为此,只需转到消息应用程序并检查代码:

  1. 带下划线的蓝色字体颜色 - 系统无法识别 一次性代码。
  2. 带有灰色下划线的黑色字体颜色(默认)- 没关系!

最后,对于第一种情况,您应该检查邮件正文中是否有错误字符的内容。

PS 仅举几个正确和错误短信的例子:

  • 短信代码:12345 英镑正确
  • 短信代码:12345 $ 正确
  • 短信代码:12345 № 正确
  • 短信代码 №1:12345 不正确

我被 "Autofill PAsswords" 在 phone 上关闭的事实弄糊涂了。 似乎需要打开此功能才能正常工作。