첫글을 UITextField의 델리게이트 메소드를 소개하는것 부터 시작하게 됐습니다.;;;
UITextField를 사용하다보면, 특정 텍스트의 범위를 벗어나지 않게 입력을 제한하고 싶어질 때가 있습니다.
그러려면 텍스트가 변경 될 때 불리는 델리게이트 메소드가 무엇인지부터 알아야 합니다.
UITextField 델리케이트 메소드인 textField:shouldChangeCharactersInRange:replacementString:는 위와 같은 상황에서 사용되는 데요.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
간단한 사용예를 보면,
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (range.location >= 4) {
return NO;
} else {
return YES;
}
}
이런 형태로 사용하면 됩니다.
파라미터인 range의 구성을 보면, NSRange라는 구조체로
typedef struct _NSRange {
NSUInteger location;
NSUInteger length;
} NSRange;
이런형태로 구성되어있습니다.
우리가 사용할 것은 location 입니다.
기존에 입력된 값이 123 이고, 새로 4 라는 값을 입력한다면,
파라미터로 들어온 값은 range.location 값은 3 이고, string은 4 가 들어옵니다.
조건이 range.location 값이 4이상일때만 NO를 리턴하고, 나머지는 YES리턴합니다.
range.location 값이 3이므로 YES리턴하고 최종적으로는 textfield에 1234가 입력됩니다.
1234 가 입력된 상태에서 새로운 값 5 를 입력시키면, 파라미터 range.location 값이 4 를 가지고 있으므로, NO를 리턴하고 textfield는 기존 1234 를 유지합니다.
자세한 내용은 https://developer.apple.com/documentation/uikit/uitextfielddelegate/1619599-textfield?language=objc 를 참조 하세요.
읽어주셔서 감사합니다~
'iOS > Objective - C' 카테고리의 다른 글
중앙값 찾기 (0) | 2018.02.08 |
---|