UITextField的子类

时间:2012-06-21 10:39:13

标签: iphone ios uikit uitextfield

我想继承UITextField,并设置一个设置最大字符数的方法。允许。在这个子类的init方法中,我尝试将inputDelegate设置为self,但不会触发回调。这也只是iOS 5的东西。我的问题是什么协议或通知允许我在敲击键时触发事件,这样我就不必在视图控制器中实现UITextField委托来实现此限制。

感谢。

1 个答案:

答案 0 :(得分:1)

你可以这样做,为你的textfield创建一个委托类

.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
在UITextField子类中的

执行以下操作

- (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;


}