자 오늘 제가 하고 싶은 일은,  UITextField에 숫자를 입력할때, ","를 자동으로 집어 넣는것입니다.
1111->1,111 이런식으로 표기가 되는것이죠.

일단 값 변경이 일어 나는것을 Catch 하는 방법은 두가지가 있습니다.

UITextFieddDelegate의  "textField:shouldChangeCharactersInRage:replacementString:" 을 이용하는 방법이 하나이고, 

두번째로, UITextFieldTextDidChangeNotification을 이용하는 것입니다.

UIKIT_EXTERN NSString *const UITextFieldTextDidChangeNotification;


우선, Notification을 사용하는 방식은 선호 하지 않는 방법이기도 하고,  Notification을 등록하면, [textField setText:] Method가 불러 질때 에도 불러짐으로 사용하지 않고,  UITextFieldDelegate Method를 구현해서 사용하도록 하겠습니다.

TextField 의 값 Setting을 UITextField 내부에서 하지 않고, 우리 쪽 소스에서 하도록 해야 합니다.
결국 shouldChange... 샬라 샬라에서 NO 를 줘서, 변경이 일어 나지 않게 합니다.

아래 소스는 UITextField 내부 구현이 아닌, 우리의 구현으로 기본적이 동작이 가능하게 하는 코드 입니다. 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];

[textField setText:newText];

return NO;

}


여기에 newText를 우리가 원하는 포맷으로 변경해주는 Formatter를 삽입하여,  콤마를 자동입력하게 할수 있습니다.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

NSString *newText = [textField.text stringByReplacingCharactersInRange:range withString:string];

[textField setText:[DataFormatter moneyFormat:newText]];

return NO;

}


iOS에서 MoneyFormatting에 관한 내용은 http://krazie99.tistory.com/49 에서 참조 하시면 됩니다 :)
이를 응용해서, iOS에서 이런저런 Auto Format Completion을 비롯한 이런저런 자동완성기능을 할 수 있을꺼라 생각됩니다.

Sample소스 첨부하니, 보시고 궁금한건 언제든 문의 하세요 ~ 




+ Recent posts