【发布时间】:2019-07-22 07:27:50
【问题描述】:
我将 UITextField 中的输入限制为仅来自 shouldChangeCharactersIn 中的字母表中的字符:
switch textField {
case descriptionTextField:
return prospectiveText.containsOnlyCharactersIn(matchCharacters: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZáäâàæãåāéëêèęėēóôòõœøōúüûùūíïìîįīÁÄÂÀÆÃÅĀÓÖÔÒÕŒØŌÚÜÛÙŪÍÏÌÎĮĪ ") && prospectiveText.count <= 51
default:
return true
}
现在,虽然这就像一个魅力,但我希望用户也可以插入表情符号。有什么办法可以做到这一点吗?我不希望他们插入数字或特殊字符。
【问题讨论】:
-
您不应该对允许的字符进行硬编码。使用
CharacterSet.letters检查字符串是否仅包含字母。至于表情符号,看看Find out if character in string is emoji -
您能否详细说明为什么我不应该对允许的字符进行硬编码?我相信你 - 但想知道为什么。感谢您的意见!
-
因为您永远无法确定迭代所有字符,尤其是对于所有不同的语言环境。
CharacterSet的存在是有原因的,它具有几乎所有Unicode类别的集合,因此您可以确保它正确处理所有可能的输入。可能的字符比您可以安全且肯定地硬编码的字符多得多,因此您很可能会遗漏一些有效的输入。
标签: ios swift uitextfield emoji