UITextField限制输入长度

来源:互联网 发布:淘宝大c香港站货源正吗 编辑:程序博客网 时间:2024/04/29 16:01

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


2 0
原创粉丝点击