iOS UITextField 每4个字符插入一个空格

2018-03-01  本文已影响293人  隔壁陈嘉敏

在实际开发中,我们偶尔会遇到要用户输入数字长串的情况,但是这个数字长串又不是像身份证号码一样各个部分的字段都是有意义的。这个时候我们为了让用户更好的检查已经输入完的字符串,可以在每隔一定个数的字符串加入一个空格。
要想知道用户在 UITextField 每一次的编辑情况,需要调用 UITextFieldDelegate 的 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 进行监听。

UITextField 的配置:

UITextField *txtItem = [[UITextField alloc] initWithFrame:frame];
[txtItem setTextColor:kColorMain];
[txtItem setFont:kFontSize15];
[txtItem setKeyboardType:UIKeyboardTypeNumberPad];
[txtItem setDelegate:self];
[mainView addSubview:txtItem];

UITextFieldDelegate 的输入监听:

#pragma mark - UITextFieldDelegate
// 文本框编辑监听
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  
    // 每间隔4个字符插入一个空格并在删除时去掉
    NSMutableString *strmText = [NSMutableString stringWithString:textField.text];
    if ([textField.text length] == range.location) {
        
        // 插入
        if ([textField.text length]%5 == 4) {
            
            [strmText appendString:@" "];
        }
        
    } else {
        
        // 删除
        if ([textField.text length] && [textField.text length]%5 == 0) {
            
            strmText = [NSMutableString stringWithString:[strmText substringToIndex:strmText.length - 1]];
        }
    }
    textField.text = strmText;
    
    return YES;
}

运行结果:


结果图.png
上一篇下一篇

猜你喜欢

热点阅读