iOS11 键盘中的字符 ASCII 问题

Character ASCII issue in iOS11 keyboard

我有一个应用程序,其中我只允许输入 ascii 值小于 127 的字符,因此当我在文本字段中输入这个 ' 字符时,在方法 func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool 中我得到的 ascii 为 39,但后来当我收集字符串时,就在将数据发送到服务器之前,我逐个字符检查输入字符串的 ASCII,我得到 ' 字符的 ascii 为 8216。这只发生在 iOS 11 中,而不是在iOS

的先前版本

我查看了 iOS11 的发行说明,它的键盘部分没有指定任何与此相关的内容。这是一个已知问题吗?在这种情况下我该怎么办,如何在文本字段中输入文本时进行验证?

智能引号和智能破折号等其他功能通过 UITextInputTraits 协议控制,UITextFieldUITextView 均采用该协议。

具体来说,smartQuotesType 属性 可以设置为 .default.yes.no 之一 您应该将此值设置为 .no