gpt4 book ai didi

ios - UITextFieldDelegate 和整行删除

转载 作者:行者123 更新时间:2023-11-28 17:41:35 25 4
gpt4 key购买 nike

当我从 UITextField 字段中逐一删除字符时,委托(delegate)方法 textField:shouldChangeCharactersInRange:replacementString: 被调用。

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

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

最佳答案

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

例如:

- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:self.textField];
}

然后

- (void)textFieldDidChange:(NSNotification *)notification
{
UITextField *aTextField = [notification object];
if ([aTextField.text length] == 0) {
aTextField.backgroundColor = [UIColor redColor];
}
}

如果你设置断点

aTextField.backgroundColor = [UIColor redColor];

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

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

关于ios - UITextFieldDelegate 和整行删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7937244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com