【问题标题】:Subclass of UITextFieldUITextField 的子类
【发布时间】:2012-06-21 10:39:13
【问题描述】:

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

谢谢。

【问题讨论】:

    标签: iphone ios uikit uitextfield


    【解决方案1】:

    你可以这样做,为你的文本字段创建一个委托类

    .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;
    
    
    }
    

    【讨论】:

    • 但是如果你在你的 ViewController 中也实现了委托呢?即此实现不会覆盖您在 LimitedTextField 中的内容吗?
    • 您可以将委托添加到受限文本字段本身,以将回调路由到视图控制器本身。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2016-04-19
    相关资源
    最近更新 更多