美文网首页
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的录入

    button需要两个textFeild的输入才能激活 RAC(self.viewModel, expressN...

  • 简记

    读取本地文件,获取string 或者 data iOS中字符串的用法 iOS 关于textFeild 和 键盘的设...

  • flutter:TextFeild垂直居中

    在使用TextFeild时,当我们设置了高度,看到的TextFeild内容并不能居中,那如何做到真正的居中呢?很多...

  • 常用不想记(一)不记又要忘

    有时候我们处理textFeild时候并不需要长按功能 给textFeild添加自定义视图 例如: 限定中文的正则表...

  • ReactiveCocoa & MVVM学习笔记

    网上关于RAC和MVVM的资料非常多,我写这篇主要是因为初学RAC,为自己记个学习笔记。 1. RAC是什么? (...

  • flutter textfeild

    记住在textfield 使用的时候,外面要包一层 https://blog.csdn.net/yechaoa/a...

  • 总结指纹锁使用事项

    一、关于指纹 指纹的录入 指纹的录入不同于手机指纹录入。手机录入指纹时,一个手指的不同部位都会被录...

  • ReactiveCocoa学习笔记二--回调统一(9.15更新)

    9.15更新 补充关于NSURLConnection的category方法+rac_sendAsynchronou...

  • (IOS)关于MVVM见解与实践

    在此之前,我在网上看了很多关于MVVM的文章,其中MVVM+RAC的模式最多,我想说的是MVVM和RAC没有必然的...

  • 让你快速上手ReactiveCocoa

    很多博客都说RAC好用,但小编发现真正缺少的是如何学习RAC的文章。于是决定自己写一遍关于学习ReactiveCo...

网友评论

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

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