iOS开发

RAC(iOS)常用方法

2019-04-28  本文已影响0人  timeQuick

前言

在学完RAC后发现方法的用法总是会忘,于是简单记录一下在工程中的用法。

RAC常用方法

UIButton点击

button点击响应

  [[self.clickBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
     //点击处理
    }];
UITextfield文字改变

监听uitextfield输入文字的改变

  // 监听文本框的文字改变
    [[self.textfiled rac_textSignal] subscribeNext:^(NSString *x) {
        NSLog(@"文本框文字发生了改变:%@",x);
    }];


  //绑定手机号  这样写可以self.loginView.PhoneTF.text = 复制时也能调用
    RAC(self.loginViewModel,phoneNumber ) = [RACSignal merge:@[RACObserve(self.loginView.phoneTF, text),self.loginView.phoneTF.rac_textSignal]];

KVO观察

监听属性

//监听对象的属性值改变,转换成信号,只要值改变就会发送信号
    [[self rac_valuesForKeyPath:@"loginValid" observer:nil] subscribeNext:^(id x) {
        
    }];

Notification通知

//键盘弹出
 [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
        NSLog(@"键盘出来了");
    }];

手势GestureRecognizer

 // 监听手势
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] init];
    [[tapGesture rac_gestureSignal] subscribeNext:^(id x) {
        NSLog(@"tap手势点击了");
    }];
    [self.view addGestureRecognizer:tapGesture];

delegate

自己定义的delegate,可以按如下实现,收到的是一个元组

    [[self rac_signalForSelector:@selector(transPhone:psd:)] subscribeNext:^(RACTuple * _Nullable x) {
        NSLog(@"data %@",x);
    }];

定时器

在不用定时器的时候记得dispose

  [[RACSignal interval:1.0 onScheduler:[RACScheduler mainThreadScheduler]] subscribeNext:^(NSDate * _Nullable x) {
        NSLog(@"timer %@",x);
    }];
    
    [[RACSignal interval:1.5 onScheduler:[RACScheduler schedulerWithPriority:(RACSchedulerPriorityHigh)]] subscribeNext:^(NSDate * _Nullable x) {
        NSLog(@"timer 2 %@",x);
    }];
    

操作符

屏幕快照 2019-04-28 下午6.44.22.png
上一篇下一篇

猜你喜欢

热点阅读