没时间解释了,上代码
#pragma mark - UITextFieldDelegate
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.text.length >= 13 && string.length > range.length) {
return NO;
}
NSInteger lengthChange = string.length - range.length;
BOOL rst = YES;
//选中区域/光标位置
NSRange sltRange = textField.selectedRange;
sltRange.location += lengthChange;
NSMutableString *mtbStr;
//删除空格则删除空格前的字符串
if ((range.location == 3 || range.location == 8) && range.length == 1 && !string.length && [[textField.text substringWithRange:range] isEqualToString:@" "]) {
mtbStr = [textField.text stringByReplacingCharactersInRange:NSMakeRange(range.location-1, 1) withString:string].mutableCopy;
sltRange.location --;
} else {
mtbStr = [textField.text stringByReplacingCharactersInRange:range withString:string].mutableCopy;
}
mtbStr = [mtbStr stringByReplacingOccurrencesOfString:@" " withString:@"" options:NSBackwardsSearch range:NSMakeRange(sltRange.location, mtbStr.length - sltRange.location)].mutableCopy;
// NSLog(@"待加空格的字符串:%@", mtbStr);
if (mtbStr.length > 3 && ![[mtbStr substringWithRange:NSMakeRange(3, 1)] isEqualToString:@" "]) {
[mtbStr insertString:@" " atIndex:3];
if (sltRange.location > 3) {
sltRange.location ++;
}
rst = NO;
}
if (mtbStr.length > 8 && ![[mtbStr substringWithRange:NSMakeRange(8, 1)] isEqualToString:@" "]) {
[mtbStr insertString:@" " atIndex:8];
if (sltRange.location > 8) {
sltRange.location ++;
}
rst = NO;
}
if (!rst) {
textField.text = mtbStr;
textField.selectedRange = sltRange;
}
return rst;
}
本文介绍了一个UITextFieldDelegate方法的实现,该方法用于自动格式化输入的文本,在特定位置插入空格,并限制总长度不超过13个字符。通过监听UITextField的变化并进行格式调整,确保输入符合预设格式。
2525

被折叠的 条评论
为什么被折叠?



