一般在开发中有一个输入框,此时我们需要限制在输入框中输入文字的个数,如果用UITextField的代理方法去实现,确实挺暴力的,不过当文字达到了限制限制的时候,此时我们就无法删除输入框里面的内容,而且在输入最后一个文字时,肯定是先出现字母,导致textField.text.length达到了上限,在此,我总结了一个方法,希望可以对有需要的朋友有所帮助!代码如下:
首先,我们在创建UITextField的时候,需要给这个对象添加一个方法,这个方法是UITextField自带的:
[_textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
实现上面所添加的方法:
- (void)textFieldDidChange:(UITextField *)textField
{
NSLog(@"%@", textField.text);
int length = [self convertToInt:textField.text];
NSLog(@"%d", length);
//如果输入框中的文字大于10,就截取前10个作为输入框的文字
if (length > 10) {
textField.text = [textField.text substringToIndex:5];
}
}
下面这个方法主要是为了判断textField中汉字的个数,一个汉字等于两个字符的长度:
- (int)convertToInt:(NSString *)strtemp//判断中英混合的的字符串长度
{
int strlength = 0;
for (int i=0; i< [strtemp length]; i++) {
int a = [strtemp characterAtIndex:i];
if( a > 0x4e00 && a < 0x9fff) { //判断是否为中文
strlength += 2;
}
}
return strlength;
}