2012-02-09 5 views

답변

4

1 단계에서 문자열의 당신의 길이를 확인 : 프로토콜 UITextFieldDelegate를 구현하는 클래스를 만듭니다

@interface TheDelegateClass : NSObject <UITextFieldDelegate> 

2 단계 : 구현에서 메소드를 오버라이드 (override) - (BOOL을) textField : (UITextField *) textField shouldChangeCharactersInRange : (NSRange) range replacementString : (NSString *) string

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    // newString is what the user is trying to input. 
    NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string]; 
    if ([newString length] < 1) { 
     // If newString is blank we will just ingore it. 
     return YES; 
    } else 
    { 
     // Otherwise we cut the length of newString to 1 (if needed) and set it to the textField. 
     textField.text = [newString length] > 1 ? [newString substringToIndex:1] : newString; 
     // And make the keyboard disappear. 
     [textField resignFirstResponder]; 
     // Return NO to not change text again as we've already changed it. 
     return NO; 
    } 
} 

3 단계 : 대리자 클래스의 인스턴스를 UITextField 대리자로 설정하십시오. 도움을

TheDelegateClass *theDelegate = [[TheDelegateClass alloc] init]; 
[theTextField setDelegate:theDelegate]; 
+0

제안 해 주셔서 감사합니다. –

0

추가 통지 생성 코드

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeText:) name:UITextFieldTextDidChangeNotification object:textField]; 

와 내가 당신을 찾고 싶어이 추측

- (void) changeText: (id) sender; 
{ 
    if ([textField.text length] == 1) 
    { 
     [textField resignFirstResponder]; 
    }   
} 
+0

감사하지만 나는 버튼을 도움을 –

0

을 구현?

- (BOOL)textFieldShouldReturn:(UITextField *)textField 
{ 
    [textField resignFirstResponder]; 
    [add your method here]; 
    return YES; 

} 

또는 당신은 당신이 textFieldDidBeginEditing에 코드를 넣을 수 있습니다 편집을 시작으로 즉시 사임 할 경우 : 대리자 메서드

[textField resignFirstResponder]; 

확인이 링크

https://developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

1

을 당신은 텍스트 델리게이트 방법으로 코드를 작성해야한다.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if([textField.text length] == 1){ 
    [textField resignFirstResponder]; 
} 

다음 textFieldDidBeginEditing

- (void)textFieldDidBeginEditing:(UITextField *)textField{ 

    if([textField.text length] == 1){ 
    [textField resignFirstResponder]; 
} 

} 
+0

감사를 수행 압박 wihout 최대한 빨리 텍스트 필드에 하나의 문자를 입력 할 때 키보드를 반환하고자하지만 난 최대한 빨리 하나의 문자를 입력 할 때 키보드를 반환하려면 텍스트 필드에서 done 버튼을 누르기 만하면됩니다. –

+0

shouldChangeCharactersInRange : (NSRange) range replacementString : (NSString *) string 하나씩 검사합니다. – Hiren

0
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if([textField.text length] == 1){ 
     [textField resignFirstResponder]; 
} 

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField 
{ 
    if([textField.text length]==1) 
    { 
     // here perform the action you want to do 
    } 

} 
관련 문제