[iOS]shouldChangeCharactersInRange:replacementString: 사용하기 iOS



UITextField 에서는 

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


UITextView 에서는 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;


함수명이 조금 다를뿐 동일한 기능을 하는 delegate method되시겠다. 


글자수제한이라던가, 글자수 제한이라던가 글자 제한 같은걸 할때 여기서 체크하면 편하다. 


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


위와 같이 사용한다면, return YES 일때 입력되는 값을 미리 알 수 있다. 


그럼 글자수 제한 체크나, 정규식 등으로 체크하기 편하다. 



textfield의 shouldChangeCharactersInRange 라고 해서 replacementString 이 한글자만 들어올거라는건 초반에 했던 착각. 


붙여넣기를 하면 그 길이만큼 들어온다. 


string 셀렉트 해서 키보드 입력시 range도 당연히 해당 셀렉트 값의 range가 떨어진다. 



처음엔 뭐 이런게 복잡하게 만들어놨어 싶었는데, 익숙해지니 쓸만한듯. 




덧. textfield에 100미만의 소수점 첫째자리 까지만 입력받으려고 하다가 정리. 

도와준 친구들에게 -이걸볼리는없지만- 감사를.


NSString* regex=@"^\\d{1,2}\\.?\\d?$"// 9 99 9. 99. 99.9 가능 999 9.99 불가




덧글

댓글 입력 영역


adsence 160x600