UITextField限制输入文字数量

  • 直入主题
    1.首先我们给UITextField加一个事件,来实时监测输入的内容
    UITextField *titleField = [[UITextField alloc] init];
    titleField.borderStyle = UITextBorderStyleNone;
    titleField.delegate = self;
    titleField.textColor = black;
    titleField.font = font;
    titleField.placeholder = @"最多10个字符";
    titleField.returnKeyType = UIReturnKeyDone;
    titleField.layer.cornerRadius = 3.0f;
    titleField.layer.borderWidth = .5f;
    titleField.layer.borderColor = [UIColor colorFromString:@"#a6a6a6"].CGColor;
    [titleField setValue:[UIColor colorFromString:@"#c2c1c1"] forKeyPath:@"_placeholderLabel.textColor"];
    [titleField setValue:[UIFont boldSystemFontOfSize:16] forKeyPath:@"_placeholderLabel.font"];
    [titleField addTarget:self action:@selector(textFiledDidChange:) forControlEvents:UIControlEventEditingChanged];

2.实现textFiledDidChange方法(可以在一个页面判断多个UITextField)

#pragma mark - 判断输入框字符串的长度
- (void)textFiledDidChange:(UITextField *)textField
{
    NSLog(@"%@", textField.text);
    int length = [self convertToInt:textField.text];
    //如果输入框中的文字大于10,就截取前10个作为输入框的文字
    if (textField == self.conditionField) {
        if (length > 6) {
            textField.text = [textField.text substringToIndex:6];
        }
    }else if (textField == self.titleField){
        
        if (length > 10) {
            textField.text = [textField.text substringToIndex:10];
        }
    }
}

3.截取文字的方法

//下面这个方法主要是为了判断textField中汉字的个数
- (int)convertToInt:(NSString *)strtemp//判断中英混合的的字符串长度
{
    int strlength = 0;
    for (int i=0; i< [strtemp length]; i++) {
        int a = [strtemp characterAtIndex:i];
        if( a > 0x4e00 && a < 0x9fff) { //判断是否为中文
            strlength += 1;
        }else{
            strlength += 1;
        }
    }
    return strlength;
}

记录开发点滴, 你我一起成长.

你可能感兴趣的:(UITextField限制输入文字数量)