[英]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.