美文网首页
RAC 代替代理、KVO、通知、事件

RAC 代替代理、KVO、通知、事件

作者: NextStepPeng | 来源:发表于2018-01-11 11:08 被阅读0次

    代替代理

    首先在创建一个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);

        }];

    相关文章

      网友评论

          本文标题:RAC 代替代理、KVO、通知、事件

          本文链接:https://www.haomeiwen.com/subject/vakznxtx.html