/** * 本文以UITextField 最大文本长度=10为例 */
首先想到的自然是delegate中的方法@selector(textField:shouldChangeCharactersInRange:replacementString:)
1.- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (textField.text.length >= 10){ return NO; } return YES; }
欢欢喜喜的去测试,输入9个数字后输入一个拼音字母后就再也无法输入了,好捉急,还无法删除,于是使劲试验,竟然发现下面的规律,好欢喜
/** * @param range .length == 1表示删除字符 .length == 0 表示输入字符 */
2. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (range.length == 1){ return YES; } if (textField.text.length >= 10){ return NO; } return YES; }
今天无意间发现另外一种方式,只把1.里中的代码改了一点,就可以实现2.中的功能,见3.~~~~将文本长度限制在10以内,同时可以删除,只不过如果最后一个还是未输完的拼音在,就无法再输入了
3. - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{ if (range.location >= 10){ return NO; } return YES; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
结果差强人意,如果用户最终还想输入一个字,会始终无法输入,好难受~
^ ^ 不过告诉你们一个好消息,我已经找到继续输入汉字的办法啦
下一篇文章我将把我的方法告诉大家,如果有更好的办法,欢迎分享给我
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
时间: 2024-11-03 20:41:15