2012년 8월 5일 일요일

iOS 프로그래밍 팁 - 6 UITextFieldDelegate Protocol Methods 작업하기

UITextField를 작업할때 클래스 선언에 <UITextFieldDelegate> 해준 다음 다음과 같이 
메소드들을 구현해줘야 한다.



#pragma mark UITextFieldDelegate Protocol Methods
// 텍스트 필드의 내용이 변경될 실행된다.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
//textField 의 text.length >= 100 등으로 글자 수 제한을 할수 있다.

//특수 문자 입력 제한도 할수 있다.
NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:LEGAL] invertedSet];
NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

return [string isEqualToString:filtered];


    return YES; // NO 리턴할 경우 변경내용이 반영되지 않는다.
}

// 텍스트 필드의 내용이 삭제될 실행된다. clearButtonMode 속성값이 UITextFieldViewModeNever 아닌 경우에만 실행된다.
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
    
    return YES; // NO 리턴할 경우 변경내용이 반영되지 않는다.
}

// 텍스트 필드 편집을 시작할때 실행된다.
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    
    return YES; // 편집을 허용하지 않고자 경우 NO 리턴한다.
}

// 텍스트 필드 편집이 시작된 (First Responder ) 실행된다.
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    
}

// 텍스트 필드 편집이 종료될때 실행된다.
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
    
    
    return YES; // NO 리턴할 경우 편집을 종료하지 않는다.
}

// 텍스트 필드 편집이 종료된 후에 실행된다.
- (void)textFieldDidEndEditing:(UITextField *)textField
{
}



-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    
    // return 키가 눌려지면 return키가 눌려진 텍스트 필드의 FirstResponder 해제한다
    
    [textField resignFirstResponder];
    
    return YES;
    
}

댓글 없음: