2012-06-21 4 views
1

UITextField를 서브 클래스 화하고 최대 문자 수를 설정하는 메소드가 필요합니다. 허용. 이 하위 클래스의 init 메서드에서 inputDelegate를 self로 설정하려고 시도하지만 콜백이 트리거되지 않습니다. 또한 이것은 iOS 5 일뿐입니다. 내 질문에 어떤 프로토콜이나 알림을 사용하면이 제한을 달성하기 위해 UITextField 대리자를 내 View Controller에 구현할 필요가 없도록 키를 누를 때 이벤트를 발생시킬 수 있습니다.UITextField의 서브 클래스

감사합니다.

당신은 이런 식으로 그것을 할 수

답변

1

, 당신은 텍스트 필드에 대한 위임 클래스를 만들

의 UITextField 서브 클래스에서하는 .m 파일

@implementation LimitedTextFieldDelegate 

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    if(textField.text.length >= 5 && ![string isEqualToString:@""]) 
     return NO; 

    return YES; 
} 
@end 

.H 파일

@interface LimitedTextFieldDelegate : UITextField<UITextFieldDelegate> 
@end 

를 다음을 수행
- (id)init 
{ 
    self = [super init]; 
    if (self) { 
     //limitedDelegate is a property of your textfield subclass 
     self.limitedDelegate = [[LimitedTextFieldDelegate alloc] init]; 
     self.delegate = self.limitedDelegate; 
    } 
    return self; 


} 
+0

당신이 ViewController에 델리게이트를 구현한다면? 이 구현은 LimitedTextField에있는 것보다 우선하지 않습니까? –

+0

콜백을 viewcontroller 자체로 라우트하기 위해 제한된 텍스트 필드 자체에 델리게이트를 추가 할 수 있습니다. –