iOS学习------监听中心的简单实用

介绍两种监听的方法的使用

1、第一种监听文本(UITextField、UITextView)文本信息的变化
1》获取监听中心
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
2》监听相应的文本
***监听文本开始编辑,调用对应方法
UITextFieldTextDidBeginEditingNotification;
***监听文本结束编辑,调用对应方法
UITextFieldTextDidEndEditingNotification;
***监听文本内容变化,调用对应方法
UITextFieldTextDidChangeNotification;

**当文本内容一发生变化就调用textChange方法
[center addObserver:self selector:@selector(textChange) name:UITextFieldTextDidChangeNotification object:self.usernameText];
3》当文本内容发生变化调用textChange方法
- (void)textChange

2、通过监听从view向Controller发送信息
该情况用在当UITextField、UITextView 在一个自定义的view中的时候,文本的内容发生改变需要将文本信息发送给Controller ,可以通过代理,block等方法实现,但当“分层”较多的时候使用上述方法会比较麻烦,因此使用监听来传递信息
1》获取监听中心并发送监听
几个参数:
name:发送的监听的名字,方便控制器通过该名字获取到监听——一般情况下定义为宏 并根据系统的命名方式进行命名  如:#define yzLoginTextDidChangeNotification @"yzLoginTextDidChangeNotification"
object:发送监听的对象  nil
userInfo:监听中需要传递出去的内容 保存在字典中,字典的key值一般也定义为宏,方便控制器通过key值获取文本信息 如: #define yzNameText @ "yzNameText"
2》发送一个监听
[[NSNotificationCenter defaultCenter] postNotificationName:yzLoginTextDidChangeNotification object:nil userInfo:@{yzNameText:self.usernameText.text,yzPswText:self.pswText.text}];
3》在控制器中获取监听
在控制器中根据name获取监听(控制器监听文本内容的变化并获取)
    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textChange:) name:yzLoginTextDidChangeNotification object:nil];
4》文本信息发生改变调用这个方法
调用该方法会将 NSNotification  传递出来,根据宏定义的key  获取 对应文本的改变后的内容
- (void)textChange:(NSNotification *)note
{
   
self.username = note.userInfo[yzNameText];
    self.psw = note.userInfo[yzPswText];
}


可以通过这种方式快速的获取一个view中文本信息的改变,并且保证了一个控件良好的封装性



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值