因leader要求输入长度做限制,而且要求一个汉字算2个字符,其他的算1个字符,再加上一个Controller有多个UITextFiled,所以我这么写控制长度。(也许会有更好的方法)
.m文件
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UITextField *textF = [[UITextField alloc] initWithFrame:CGRectMake(10, 100, self.view.frame.size.width - 20, 30)];
textF.layer.borderWidth = 0.5;
textF.layer.borderColor = [UIColor lightGrayColor].CGColor;
textF.layer.cornerRadius = 5;
textF.layer.masksToBounds = YES;
[self.view addSubview:textF];
[textF addTarget:self action:@selector(textFieldChange:) forControlEvents:UIControlEventEditingChanged];
}
- (void)textFieldChange:(UITextField*)textF{
if ([self calculateTextNumber:textF.text]>30) {
float number = 0.0;
NSString *str = [NSString string];
for (float index = 0.0; index < textF.text.length;index++ ) {
NSString *character = [textF.text substringWithRange:NSMakeRange(index, 1)];
if ([character lengthOfBytesUsingEncoding:NSUTF8StringEncoding] == 3) {
number += 2;
} else {
number += 1;
}
if (number > 30) {//30个字符 == 15个汉字
break;
}else{
str = [str stringByAppendingString:character];
}
}
textF.text = str;
}
}
/**
* 计算字符
*
* @param textA 需要计算的字符串
*
* @return 返回字符数
*/
-(CGFloat)calculateTextNumber:(NSString *) text
{
float number = 0.0;
for (int index = 0; index < [text length]; index++) {
NSString *character = [text substringWithRange:NSMakeRange(index, 1)];
if ([character lengthOfBytesUsingEncoding:NSUTF8StringEncoding] == 3) {
number += 2;
} else {
number += 1;
}
}
return number;
}