RxSwift實現(xiàn)對textField內(nèi)容監(jiān)聽改變按鈕狀態(tài)

在iOS開發(fā)中,經(jīng)常遇到按鈕的響應(yīng)狀態(tài)跟隨輸入框內(nèi)容的變化而變化,以下面兩個場景為例子:

第一個場景:單輸入框場景
獲取驗證碼后,跳轉(zhuǎn)到一個輸入驗證碼的界面,要求輸入框中輸入6位數(shù)字,輸入框下方的提交按鈕才可以被點擊,否則為不可點擊狀態(tài);

第二個場景:多輸入框場景(以兩個輸入框為例子)
用戶必須輸入用戶名和密碼后,才可以點擊下方的登陸按鈕,否則登陸按鈕為不可點擊狀態(tài);

這兩個需求是開發(fā)人員的基操,簡單實現(xiàn)方式我就不再贅述,我們展示一下使用RxSwift來實現(xiàn)這種效果有多easy。

第一個場景,綁定關(guān)系代碼如下:

 func setupEvent(){
        //使用Rx對輸入框內(nèi)容進行監(jiān)聽,如果監(jiān)聽內(nèi)容發(fā)生改變,按鈕狀態(tài)進行改變
        let verifiInput = verifiTextField?.rx.text.orEmpty.asDriver()
            .throttle(.milliseconds(300))    //當文本框內(nèi)容改變(0.3秒內(nèi)值若多次改變,取最后一次)

        //輸入的內(nèi)容綁定按鈕的響應(yīng)
        verifiInput?.map({ $0.count > 5 })
            .drive((submitButton?.rx.isEnabled)!)
            .disposed(by:disposeBag)
        
        //submit button action
        submitButton?.rx.tap.subscribe(onNext: {
            print("sumit verification code!!")
        }).disposed(by: disposeBag)
  }

效果如下


單輸入框.gif

第二個場景,綁定關(guān)系代碼如下:

func setupEvent(){
        //listen
        Observable.combineLatest((accTextF?.rx.text.orEmpty)!, (pswTextF?.rx.text.orEmpty)!){ textValue1,textValue2 -> Bool in
            return textValue1.count > 0 && textValue2.count > 0
        }
        .map{ $0 }
        .bind(to: (loginButton?.rx.isEnabled)!)
        .disposed(by: disposeBag)
        
        
        //login event
        loginButton?.rx.tap.subscribe(onNext: {
            print("click login!!")
        }).disposed(by: disposeBag)
        
        //jump Verification Code page
        jumpVerifiButton?.rx.tap.subscribe(onNext: {[weak self] in
            self?.navigationController?.pushViewController(VerificationCodeViewController.init(), animated: true)
        }).disposed(by: disposeBag)
    }

效果如下


多輸入框.gif

響應(yīng)式編程真的很方便,節(jié)省大部分代碼。

完整工程鏈接:
鏈接: https://pan.baidu.com/s/11a_6p7RiaxzHbdRTA5zFJQ 密碼: 5drh

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

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

  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,857評論 0 11
  • 彩排完,天已黑
    劉凱書法閱讀 4,479評論 1 3
  • 沒事就多看看書,因為腹有詩書氣自華,讀書萬卷始通神。沒事就多出去旅游,別因為沒錢而找借口,因為只要你省吃儉用,來...
    向陽之心閱讀 4,973評論 3 11
  • 表情是什么,我認為表情就是表現(xiàn)出來的情緒。表情可以傳達很多信息。高興了當然就笑了,難過就哭了。兩者是相互影響密不可...
    Persistenc_6aea閱讀 129,665評論 2 7

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