在日常开发中碰到限制字数的需求也是常见的,以UITextField为例(UITextView同理),看看如何限制字数。这里我只是简单实现这个功能,如果是字符比较混杂,比如表情,各种类型的文字等的计数不知道这段代码能不能正确限制字数。
首先当然要实现UITextField的代理:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//获取到文本内容
NSString *content = [textField.text
stringByReplacingCharactersInRange:range
withString:string];
if (string.length == 0)
{
return YES;
}
NSInteger existedLength = textField.text.length;
NSInteger selectedLength = range.length;
NSInteger replaceLength = string.length;
//限制只能输入12个字符
if (existedLength - selectedLength + replaceLength > 12) {
//只取前12个字符
self.uploadOrgName = [textField.text substringToIndex:12];
return NO;
}
//12个字符以下允许继续编辑
return YES;
}
- (void)textFieldDidChange:(UITextField *)textField
{
//如果当前的textField是你希望编辑的textField,如果字数大于12,那么只显示12个字符,多余的输入舍弃
if (textField == self.orgNameTextField) {
if (textField.text.length > 12) {
textField.text = [textField.text substringToIndex:12];
}
}
}
如果需要显示类似7/12这种提示当前输入字数与字数上限的,获取当前显示的字符(content)的长度即可。