UITextField 的子类
Posted
技术标签:
【中文标题】UITextField 的子类【英文标题】:Subclass of UITextField 【发布时间】:2012-06-21 10:39:13 【问题描述】:我想继承 UITextField 并有一个设置最大字符数的方法。允许。在这个子类的 init 方法中,我尝试将 inputDelegate 设置为 self 但不会触发回调。这也只是 ios 5 的东西。我的问题是什么协议或通知允许我在点击一个键时触发一个事件,这样我就不必在我的视图控制器中实现 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 中的内容吗? 您可以将委托添加到受限文本字段本身,以将回调路由到视图控制器本身。以上是关于UITextField 的子类的主要内容,如果未能解决你的问题,请参考以下文章