- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
}
델리게이트 함수에
다음과 같은 코드가 필요하다.
3자가 넘어가면 - (대쉬) 추가
010-
또 8자가 넘어가면 (대쉬) 추가
010-674-
여기서 번호자리가 5자가 되면
가운데 3자리가 4자리가 되게
이거 그대로 코딩을 하면
NSString stringWithFormat:과
txtField setText:
를 이용하면 된다.
NSUInteger currentLength = textField.text.length;
NSCharacterSet *numbers = [NSCharacterSet decimalDigitCharacterSet];
if (range.length == 1) {
return YES;
}
if ([numbers characterIsMember:[string characterAtIndex:0]]) {
if ( currentLength == 3 ) {
if (range.length != 1) {
NSString *firstThreeDigits = [textField.text substringWithRange:NSMakeRange(0, 3)];
NSString *updatedText;
if ([string isEqualToString:@"-"]) {
updatedText = [NSString stringWithFormat:@"%@",firstThreeDigits];
} else {
updatedText = [NSString stringWithFormat:@"%@-",firstThreeDigits];
}
[textField setText:updatedText];
}
} else if ( currentLength > 3 && currentLength < 8 ) {
if ( range.length != 1 ) {
NSString *firstThree = [textField.text substringWithRange:NSMakeRange(0, 3)];
NSString *dash = [textField.text substringWithRange:NSMakeRange(3, 1)];
NSUInteger newLenght = range.location - 4;
NSString *nextDigits = [textField.text substringWithRange:NSMakeRange(4, newLenght)];
NSString *updatedText = [NSString stringWithFormat:@"%@%@%@",firstThree,dash,nextDigits];
[textField setText:updatedText];
}
} else if ( currentLength == 8 ) {
if ( range.length != 1 ) {
NSString *areaCode = [textField.text substringWithRange:NSMakeRange(0, 3)];
NSString *firstThree = [textField.text substringWithRange:NSMakeRange(4, 3)];
NSString *nextDigit = [textField.text substringWithRange:NSMakeRange(7, 1)];
[textField setText:[NSString stringWithFormat:@"%@-%@-%@",areaCode,firstThree,nextDigit]];
}
} else if ( currentLength == 12 ) {
if ( range.length != 1 ) {
NSString *areaCode = [textField.text substringWithRange:NSMakeRange(0, 3)];
NSString *firstThree = [textField.text substringWithRange:NSMakeRange(4, 3)];
NSString *nextDigit = [textField.text substringWithRange:NSMakeRange(8, 1)];
NSString *nextDigit2 = [textField.text substringWithRange:NSMakeRange(9, 3)];
[textField setText:[NSString stringWithFormat:@"%@-%@%@-%@",areaCode,firstThree,nextDigit,nextDigit2]];
}
}
} else {
return NO;
}
return YES;
댓글 3개:
감사합니다 시간 많이 아끼게 됐네요
도움이 되었다니 좋네요.
써본결과 하나의 단점이 있네요 중간부터 지우면 약간 로직이 꼬인다는 점?
찾아서 보수해보겠습니다.
댓글 쓰기