iOS/Objective - C

UITextField - 텍스트가 변경 될 때 불리는 델리게이트 메소드는?

DevBabamba 2017. 12. 21. 10:12
반응형

첫글을 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