因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;
}