先说说记录这个的原因吧,关于限制UITextField
的输入字数的各种需求,已经疲软了,工作几年中用的还真不少,有只要字数长度的,也有字符长度的,当然这个就包括中文和英文,还有.....标点符号也分中文和英文的,每次都多不情愿的写这个地方,闲来无事,就来记录一下,方便大家,若有不对的地方,多多指教哈。
关于UITextField
大家肯定对下面这个方法非常熟悉
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
那么这个函数的大概意思是什么呢?我是这么理解的(个人认为)
由于返回的是个 BOOL 所以我猜想大概就是我们在输入的时候,是否对UITextField 的内容进行修改
下面来简单分析下参数
textField
这个参数大家都懂,就是响应该协议的UITextField对象
range
在这个函数中,添加了打印信息,测试了下
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSLog(@" 打印信息:%lu -----%lu ",(unsigned long)range.location,(unsigned long)range.length);
}
//打印log
2017-01-25 17:48:49.826 TestObject[5502:683375] 打印信息toBeString:Zxtgfd
2017-01-25 17:48:50.506 TestObject[5502:683375] 打印信息:6 -----0
2017-01-25 17:48:50.508 TestObject[5502:683375] 打印信息toBeString:Zxtgfda
2017-01-25 17:48:51.894 TestObject[5502:683375] 打印信息:6 -----1
由此可以看到,在输入的时候,range.length为0,range.location为插入时的位置 ,range.length为1时,是我在点击删除的时候打印的,应该可以表示删除(不确定)