首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITextFieldDelegate和整行删除

UITextFieldDelegate和整行删除
EN

Stack Overflow用户
提问于 2011-10-29 13:48:31
回答 1查看 363关注 0票数 1

当我逐个删除UITextField字段中的字符时,将调用委托方法textField:shouldChangeCharactersInRange:replacementString:

但是,当我在文本字段中键入整行字符,然后按住delete键时,iOS首先会为它删除的每个字符调用委托。但在某一时刻(大约中途),它只会删除剩下的所有内容。奇怪的是,当这种情况发生时,textField:shouldChangeCharactersInRange:replacementString:不会被调用。textFieldShouldClear:也不是。

如何检测此事件?我想在文本字段为空时更新UI。如果我以这种方式清空它,我的代码将无法检测到。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-29 14:38:11

您可以在文本字段上注册一个对象以观察UITextFieldDidChangeNotification

例如:

代码语言:javascript
复制
- (void)viewDidLoad
{
    [super viewDidLoad];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:self.textField];    
}

然后

代码语言:javascript
复制
- (void)textFieldDidChange:(NSNotification *)notification
{
    UITextField *aTextField = [notification object];
    if ([aTextField.text length] == 0) {
        aTextField.backgroundColor = [UIColor redColor];
    }
}

如果在上设置断点

代码语言:javascript
复制
aTextField.backgroundColor = [UIColor redColor];

您将看到,它是在最后一次删除之前调用的,它将文本字段的text属性设置为nil。

您也可以简单地访问您的属性self.textField,但我正在演示如何访问通知引用的对象。如果在-addObserver:selector:name:object:中省略了最后一个参数( textFields:),它将为该对象实例中的所有对象调用通知。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7937244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档