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