美文网首页
rac关于textFeild的录入

rac关于textFeild的录入

作者: FancyMF | 来源:发表于2019-05-27 12:33 被阅读0次

    button需要两个textFeild的输入才能激活

        RAC(self.viewModel, expressNumber) =self.expressNumberTextField.rac_textSignal;//手动设置了UITextField的textself.expressNumberTextField.text =@"10937374783";

    //结果self.viewModel.expressNumber没有变化,还是原来值

        @weakify(self);

    [[RACSignalmerge:@[self.expressNumberTextField.rac_textSignal, RACObserve(self.expressNumberTextField, text)]]subscribeNext:^(NSString* text){ @strongify(self);self.viewModel.expressNumber = text; }];

        RAC(self.submitBtn, enabled) = [RACSignal                                   combineLatest:@[RACObserve(self.nameTextField, text),RACObserve(self.numberTextField, text),RACObserve(self.faceView.IDView, image),RACObserve(self.nationView.IDView, image)]          reduce:^id(NSString*username,NSString*passwordNumber){

                                           return@(username.length>=1&& (passwordNumber.length==15|| passwordNumber.length==18)&&self.faceView.IDView.image&&self.nationView.IDView.image);

                                       }];

    后来发现这样的话如果点击textFeild的时候是不会经过这个判断的,这样是不符合要求的。

    后来经过与上面的代码的融合。

    ``` javascript

         [[RACSignal merge:@[self.nameTextField.rac_textSignal,RACObserve(self.nameTextField, text)]]subscribeNext:^(NSString* text){

            weakRef.viewModel.IDCardName= text;

        }];

        [[RACSignal merge:@[self.numberTextField.rac_textSignal,RACObserve(self.numberTextField, text)]]subscribeNext:^(NSString* text){

            weakRef.viewModel.IDCardNumber= text;

        }];

        RAC(self.submitBtn, enabled) = [RACSignal

                                        combineLatest:@[RACObserve(self.viewModel, IDCardName),RACObserve(self.viewModel, IDCardNumber)]

                                        reduce:^id(NSString*username,NSString*passwordNumber){

                                            return@(username.length>=1&& (passwordNumber.length==15|| passwordNumber.length==18)&&self.faceView.IDView.image&&self.nationView.IDView.image);

                                        }];

    ```

    先说明RAC中merge与combineLatest的区别,可以说merge是“或”,而combine是“且”的的意思。merge是两个信号之中只要有一个以上的信号发出,就触发条件。而combine就是需要同时两个信号发出才能触发。

    相关文章

      网友评论

          本文标题:rac关于textFeild的录入

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