IOS NSNotificationCenter(通知 的使用)监听文本框的文字改变

时间:2023-03-08 17:11:19
IOS NSNotificationCenter(通知 的使用)监听文本框的文字改变

监听文本框的文字改变

* 一个文本输入框的文字发生改变时,文本输入框会发出一个UITextFieldTextDidChangeNotification通知

* 因此通过监听通知来监听文本输入框的文字改变

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:textField];

// textField文本输入框的文字改变了,就会调用self的textChange方法

拿到通知

- (void)viewDidLoad
{
[super viewDidLoad];
// 监听文本输入框的改变
// [self.accountField addTarget:self action:@selector(textChange) forControlEvents:nil] // self.accountField.delegate = self; // 1.拿到通知中心
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
// 2.注册监听
// 注意点: 一定要写上通知的发布者
[center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.accountField];
[center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.pwdField]; // UISwitch *switchBtn;
// [switchBtn addTarget:self action:@selector(change) forControlEvents:UIControlEventValueChanged]
} - (void)textChange
{
/*
// 1.判断是否同时输入了账号和密码
if (self.accountField.text.length > 0 &&
self.pwdField.text.length > 0) {
// 2.让登录按钮可用
self.loginBtn.enabled = YES;
}else
{
self.loginBtn.enabled = NO;
}
*/
self.loginBtn.enabled = (self.accountField.text.length > &&
self.pwdField.text.length > );
}

移除通知

- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}