NotificationCenter机制使用了操作系统的功能。而实际上,NSNotification就是通过KVO的方式来进行消息的『广播』。通过NSNotificationCenter可以让对象之间进行进行通讯,这些对象相互间可以不认识。当你用一个并行的流来推送通知,或者刷新数据库,并希望在界面中能够看到时,这非常有用。(我们对系统某些事件的监听的时刻就可以使用这个方法,例如键盘抬起落下操作,某个textfield失去第一响应者的时刻,都会发送一个通知给通知中心,通过监听这些通知,我们就可以与系统交互。)
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyBoardDicChanged:)name:UIKeyboardWillChangeFrameNotification object:nil];
//方法实现
-(void)keyBoardDicChanged:(NSNotification *)notification{
//可以先打印notifi开看看有什么消息名字
CGRect endRect = [[notifi.userInfo objectForKey:@"UIKeyboardFrameEndUserInfoKey"] CGRectValue];
......//屏幕在键盘改变的时候重新布局
[self.view layoutIfNeeded];
}
而NotificationCenter的简单应用的步骤:
//1.注册消息
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(方法) name:@"消息名字" object:nil];
//2.方法实现
-(void)方法:(NSNotification *)notfication{
//获取传递的数据
NSDictionary * dataDic = notfication.object;
}
//3.发布消息
[[NSNotificationCenter defaultCenter]postNotificationName:@"消息名字" object:传回的东西];
网友评论