您的位置:首页 > 产品设计 > UI/UE

UITextField限制输入长度

2016-02-24 15:59 381 查看
因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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: