美文网首页
ran 学习

ran 学习

作者: BeeQiang | 来源:发表于2017-10-13 17:42 被阅读0次

    //1.创建信号    RACSignal *signal = [RACSignal createSignal:^RACDisposable *(idsubscriber) {

    //3.发送信号

    [subscriber sendNext:@"发送信号"];

    /**

    如果不在发送数据,最好发送信号完成,内部会自动调用[RACDisposable disposable]取消订阅信号

    */

    [subscriber sendCompleted];

    //取消订阅方法

    return [RACDisposable disposableWithBlock:^{

    //block调用时刻:当信号发送完成或者发送错误,就会自动执行这个block,取消订阅信号

    // 执行完Block后,当前信号就不在被订阅了。

    NSLog(@"信号销毁了");

    }];

    }];

    //2.订阅信号

    [signal subscribeNext:^(id x) {

    NSLog(@"订阅信号:%@",x);

    }];

    [[_userNameTextField rac_textSignal] subscribeNext:^(NSString *x) {

    NSLog(@"文本框文字发生了改变:%@",x);

    }];

    //    通过RAC提供的宏快速实现textSingel的监听

    //    RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某个属性绑定。

    //    当textField的文字发生改变时,label的文字也发生改变

    RAC(self.userNameTextField,text) = self.userNameTextField.rac_textSignal;

    //    监听手势

    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] init];

    [[tapGesture rac_gestureSignal] subscribeNext:^(id x) {

    NSLog(@"view被触发tap手势");

    }];

    [self.view addGestureRecognizer:tapGesture];

    self.view.userInteractionEnabled = YES;

    // 过滤器

    [[self.userNameTextField.rac_textSignal filter:^BOOL(NSString *value) {

    //大于或者等于3 -->往下走。go

    return value.length >= 3;

    }] subscribeNext:^(id x) {

    NSLog(@"%@",x);

    }];

    [[_LoginClick rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {

    NSLog(@"按钮被点击");

    }];

    //      监听对象的属性值改变,转换成信号,只要值改变就会发送信号

    [[View rac_valuesAndChangesForKeyPath:@"x" options:NSKeyValueObservingOptionNew observer:nil] subscribeNext:^(id x) {

    NSLog(@"view的x值发生了改变");

    }];

    [[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(id x) {

    NSLog(@"键盘将要出现");

    }];

    //    通过RAC提供的宏快速实现观察者模式

    //    RACObserve(self, name):监听某个对象的某个属性,返回的是信号。

    [RACObserve(self.userNameTextField,self.userNameTextField.text.length) subscribeNext:^(id x) {

    NSLog(@"绿色view的x方向发生改变");

    }];

    [[_LoginClick rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(id x) {

    //        STRONG

    UserModel *wxModel = [UserModel new];

    wxModel.userName = _userNameTextField.text;

    wxModel.psWord = _passWordTextField.text;

    [[LoginModel singalForLogin:wxModel] subscribeNext:^(NSNumber *x) {

    NSLog(@"xx= %@",x);

    //            STRONG

    //            if (x.boolValue) {

    //                [self goback];

    //            }

    } error:^(NSError *error) {

    }];

    }];

    相关文章

      网友评论

          本文标题:ran 学习

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