簡體   English   中英

RxSwift Textfield防反跳訂閱未調用

[英]RxSwift Textfield debounce subscribe is not calling

用戶停止鍵入后0.3秒后的更改應顯示在標簽中,但訂閱onNext不會調用

override func viewDidLoad() {
    ...
    let disposeBag = DisposeBag()
    textfield.rx.text.orEmpty
        .debounce(.milliseconds(300), scheduler: MainScheduler.instance)
        .subscribe(onNext: { [unowned self] (text) in
            self.label.text = text
        }).disposed(by: disposebag)
    ...
}

使用Swift 5

pod 'RxSwift', '~> 5'
pod 'RxCocoa', '~> 5'

解決方案是在viewDidLoad()范圍之外聲明disposebag

let disposebag = DisposeBag()

override func viewDidLoad() {
    super.viewDidLoad()

    ...

    textfield.rx.text.orEmpty
        .debounce(.milliseconds(1000), scheduler: MainScheduler.instance)
        .subscribe(onNext: { [unowned self] (text) in
            self.label.text = text
            print("Yo")
        }).disposed(by: disposebag)
}

因為在您的代碼中, disposebag位於viewDidLoad()范圍內,所以一旦此方法結束, disposebag釋放,從而取消訂閱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM