0

如何只允许 UITextView 中的某些字符?

我只想允许英文字符、数字和阿拉伯字符。

我找到了很多解决方案,但 UITextField 不是 UITextView!

4

1 回答 1

2

您可以使用(docs)的textView:shouldChangeTextInRange:replacementText:方法:UITextViewDelegate

每当用户键入新字符或删除现有字符时,文本视图都会调用此方法。此方法的实现是可选的。您可以使用此方法在文本提交到文本视图存储之前替换文本。例如,拼写检查器可能会使用此方法将拼写错误的单词替换为正确的拼写。

您应该检查replacementText参数是否包含非法字符。在这种情况下,您可以返回NO以防止插入文本。当插入多个字符的文本并且并非所有字符都被允许时,这可能会出现问题:您会做什么,允许插入(包括非法字符)还是阻止插入(包括允许的字符)?


这意味着您需要textViewDidChange:方法(docs):

文本视图调用此方法以响应用户对文本的更改。不会调用此方法以响应以编程方式启动的更改。

调用此方法时,您可以检查 的值UITextView并在之后删除非法字符。


我认为最好同时使用这两种方法。第一个在用户键入时提供最佳体验(字符根本不显示,而不是先显示然后删除)。例如,第二种方法确保在粘贴某些文本时会删除非法字符。

于 2012-05-28T12:26:10.927 回答