代替代理
首先在创建一个View命名为BlueView,里面放一个Btn,Btn里面关联一个点击事件btnClick;
现在通过RAC 的方式,代替代理的方式,在控制器里面监控Btn的点击事件;实现如下
[[_blueView rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(RACTuple * _Nullable x) {
NSLog(@"%@",x);
}];
代替KVO
//代替KVO 监听回调在一起
[_blueView rac_observeKeyPath:@"frame" options:NSKeyValueObservingOptionOld | NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) {
//回调 value:立刻马上改变的值 change :根据options 对应相应的新旧值
NSLog(@"value%@---%@",value,change);
}];
//更方便的方式
[[_blueView rac_valuesForKeyPath:@"frame" observer:nil] subscribeNext:^(id _Nullable x) {
//X 修改了
NSLog(@"%@",x);
}];
代替事件监听
//监听事件
[[_btn rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(__kindof UIControl * _Nullable x) {
NSLog(@"%@",x);//x:信号发送者 按钮本身
}];
代替通知
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardDidShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
NSLog(@"监听系统键盘弹出通知:%@",x);
}];
监听文本框
//监听文本框
[[_field rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
NSLog(@"监听文本框:%@",x);
}];
网友评论