介绍两种监听的方法的使用
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.username = note.userInfo[yzNameText];
self.psw
= note.userInfo[yzPswText];
}
可以通过这种方式快速的获取一个view中文本信息的改变,并且保证了一个控件良好的封装性