본문 바로가기

Mac&iOS

정규식으로 텍스트필드에 영문, 한글, 숫자, 특수문자만 입력 받기(1)

NSTextfield에 NSFormatter를 이용해서 정해진 값만 받도록 해보자.


우선 NSFormatter를 상속받아서 CustomFormatter 클래스를 만든다. 


@interface CustomFormatter : NSFormatter

@end


이제 CustomFormatter에서 다음 메시지들을 구현한다.


- (NSString *)stringForObjectValue:(id)obj;


- (BOOL)getObjectValue:(id *)obj forString:(NSString *)string errorDescription:(SString **)error;


- (BOOL)isPartialStringValid:(NSString **)partialStringPtr proposedSelectedRange:(NSRangePointer)proposedSelRangePtr originalString:(NSString *)origString originalSelectedRange:(NSRange)origSelRange errorDescription:(NSString **)error;


앞에 두개는 다음과 같이 구현한다. 


- (NSString *)stringForObjectValue:(id)object {

    if ([object isKindOfClass:[NSString class]] == NO) {

        return nil;

    }

    return [NSString stringWithString:(NSString *)object];

}


- (BOOL)getObjectValue:(id *)object forString:(NSString *)string errorDescription:(NSString **)error {

    *object = [NSString stringWithString:string];

    return YES;


이제 실제 값을 체크할 isPartialStringValid:proposedSelectedRange:originalString:originalSelectedRange:errorDescription:를 구현할 차례다. 


그부분은 다음에 설명할 예정이다. 


다음 포스트 : 정규식으로 텍스트필드에 영문, 한글, 숫자, 특수문자만 입력 받기(2)