如何只允许UITextView中的某些字符?
我想只允许英文字符&数字与数字阿拉伯字符。
我找到了很多解决方案,但UITextField不是UITextView!
答案 0 :(得分:2)
您可以使用textView:shouldChangeTextInRange:replacementText:
(docs)的UITextViewDelegate
方法:
只要用户键入新文本,文本视图就会调用此方法 字符或删除现有字符。执行此 方法是可选的。您可以使用此方法替换之前的文本 致力于文本视图存储。例如,拼写检查 可能会使用此方法用正确的替换拼写错误的单词 拼写。
您应该检查replacementText
参数是否包含非法字符。在这种情况下,您可以返回NO
以防止插入文本。当插入多个字符的文本时,这可能会出现问题,并且不允许所有字符:允许插入(包括非法字符)或阻止它(包括允许的字符)?
这意味着您需要textViewDidChange:
方法(docs):
文本视图调用此方法以响应用户启动的更改 到文本。不会以编程方式调用此方法 发起了改变。
调用此方法后,您可以检查UITextView
的值,然后删除非法字符。
我认为最好使用这两种方法。第一个提供了用户输入时的最佳体验(根本不显示该字符,而不是首先显示该字符,之后被删除)。第二种方法可确保在粘贴某些文本时删除非法字符,例如。