rac關(guān)于textFeild的錄入

button需要兩個(gè)textFeild的輸入才能激活


? ? RAC(self.viewModel, expressNumber) =self.expressNumberTextField.rac_textSignal;//手動(dòng)設(shè)置了UITextField的textself.expressNumberTextField.text =@"10937374783";

//結(jié)果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);

?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? }];


后來發(fā)現(xiàn)這樣的話如果點(diǎn)擊textFeild的時(shí)候是不會(huì)經(jīng)過這個(gè)判斷的,這樣是不符合要求的。

后來經(jīng)過與上面的代碼的融合。

``` 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的區(qū)別,可以說merge是“或”,而combine是“且”的的意思。merge是兩個(gè)信號(hào)之中只要有一個(gè)以上的信號(hào)發(fā)出,就觸發(fā)條件。而combine就是需要同時(shí)兩個(gè)信號(hào)發(fā)出才能觸發(fā)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容