swift - 使用 RxSwift 的问题

标签 swift rx-swift rx-cocoa

我需要在用户打字时指示某些延迟状态。我正在尝试使用 RxSwift:

_textField.rx.text.orEmpty.debounce(3, scheduler: MainScheduler.instance).distinctUntilChanged().subscribe({[weak self] _ in
        self?.typeViewShould(hide: true)
    }).addDisposableTo(disposeBag)

问题是3秒后,我想等待, block 执行与我输入的字符一样多的次数,而不仅仅是一次最新值。我尝试从 GitHub 示例搜索重写代码,但不起作用:

        _ = _textField.rx.text.orEmpty.debounce(3, scheduler: MainScheduler.instance).distinctUntilChanged().flatMapLatest {[weak self] query -> Observable<[String]> in
        self?._textField.text = nil
        self?.typeViewShould(hide: true)
        return .just([])
    }.observeOn(MainScheduler.instance)

我做错了什么?

最佳答案

“去抖”的工作原理如下 - http://rxmarbles.com/#debounce

如果我正确理解你的问题,你想要这样的东西 -

        let timer = Observable<Int>.timer(3.0, scheduler: scheduler)
        let textAfter3Seconds = Observable.combineLatest(timer, _textField.rx.text) { $1 }

关于swift - 使用 RxSwift 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45772773/

相关文章:

ios - 快速在 UITABLEVIEW 上向右滑动时添加操作

swift - RxSwift PublishSubject 在初始化时无意中触发

swift - Rx swift : Observable while a button holds down

ios - 如何使用 RxSwift disposeBag 防止 UITableViewCell 中重复的 UIButton 点击

macos - NSTableview 与 RXSwift 和 RxCocoa for OSX

ios - 找不到 downloadimageurl 来下载 Collection View 单元格图像的图像

ios - Swift:如何理解下载的图像是空的?

ios + Parse.com - 使表只读

ios - 实例方法 'flatMap'要求 'String'符合 'ObservableConvertibleType'

ios - 如何在 RxCocoa 中为自定义按钮添加控件事件?