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

监听文本框的文字改变

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

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

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

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

 拿到通知

- (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 > 0  &&
    self.pwdField.text.length > 0);
}

移除通知 

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
原文地址:https://www.cnblogs.com/liuwj/p/6528310.html