利用NSNotificationCenter消息通信机制观察UITextField的状态(Swift)

本文介绍了如何在Swift中利用NSNotification实现对UITextField状态的实时监控,特别是在登录界面中,根据用户名和密码是否为空动态控制登录按钮的可用性。通过添加观察者并监听UITextFieldTextDidChangeNotification,可以在文本变化时更新登录按钮的状态。此外,还讨论了为什么没有选择使用代理方法,以及自定义UITextField时遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

UITextField本身自带三个消息类型:

UITextFieldTextDidBeginEditingNotification
UITextFieldTextDidChangeNotification
UITextFieldTextDidEndEditingNotification

至于作用嘛,看名字就知道了啦~~
因为登录界面需要,所以今天就稍微的了解了一下= =,然后怕又会忘记了,所以就记录下来了。

接下来讲讲怎么使用这三个东西。

首先,我想实现一个这样的功能,就是以下(还在很后面呢)的登录界面,登录按钮在用户名或者密码为空的时候是无法点击的,当用户名和密码都不是空的时候,登录按钮才可以点击。而且最重要的是这个过程是动态的,不能等用户名或密码输完了后在判断,于是代理方法里的textFieldDidEndEditing就帕斯掉了,那么不还有一个shouldChangeCharactersInRange方法吗?这家伙不也是可以实时监控输入内容的吗?非得用nsnotification?嗯,你可以自己尝试下。。。。。
于是我就用UITextFieldTextDidChangeNotification来实现我的功能啦,如名所说,只要文本发生变化就会触发消息。
首先添加观察者, 记得不用的时候要解除掉通知哦。:

//ViewContrller.swift 
    override func viewDidLoad() {
        super.viewDidLoad()
        ......
        NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.loginStatus(_:)), name: UITextFieldTextDidChangeNotification, object: nil)
        // Do any additional setup after loading the view.
    }
    override func viewDidDisappear(animated: Bool) {
        NSNotificationCenter.defaultCenter().removeObserver(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值