代替代理
首先在創(chuàng)建一個View命名為BlueView,里面放一個Btn,Btn里面關(guān)聯(lián)一個點擊事件btnClick;
現(xiàn)在通過RAC 的方式豆茫,代替代理的方式侨歉,在控制器里面監(jiān)控Btn的點擊事件;實現(xiàn)如下
[[_blueView rac_signalForSelector:@selector(btnClick:)] subscribeNext:^(RACTuple * _Nullable x) {
? ? ? ? NSLog(@"%@",x);
? ? }];
代替KVO
//代替KVO 監(jiān)聽回調(diào)在一起
? ? [_blueView rac_observeKeyPath:@"frame" options:NSKeyValueObservingOptionOld? | NSKeyValueObservingOptionNew observer:nil block:^(id value, NSDictionary *change, BOOL causedByDealloc, BOOL affectedOnlyLastComponent) {
? ? ? ? //回調(diào) value:立刻馬上改變的值 change :根據(jù)options 對應(yīng)相應(yīng)的新舊值
? ? ? ? NSLog(@"value%@---%@",value,change);
? ? }];
//更方便的方式
? ? [[_blueView rac_valuesForKeyPath:@"frame" observer:nil] subscribeNext:^(id? _Nullable x) {
? ? ? ? //X 修改了
? ? ? ? NSLog(@"%@",x);
? ? }];
代替事件監(jiān)聽
//監(jiān)聽事件
? ? [[_btn rac_signalForControlEvents:(UIControlEventTouchUpInside)] subscribeNext:^(__kindof UIControl * _Nullable x) {
? ? ? ? NSLog(@"%@",x);//x:信號發(fā)送者? 按鈕本身
? ? }];
代替通知
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardDidShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
? ? ? ? NSLog(@"監(jiān)聽系統(tǒng)鍵盤彈出通知:%@",x);
? ? }];
監(jiān)聽文本框
//監(jiān)聽文本框
? ? [[_field rac_textSignal] subscribeNext:^(NSString * _Nullable x) {
? ? ? ? NSLog(@"監(jiān)聽文本框:%@",x);
? ? }];