RxSwift - 验证文本字段是否已聚焦

时间:2017-12-16 15:00:39

标签: ios swift reactive-programming rx-swift reactivex

我有一个UITextField,并希望每次重点关注时执行操作。这是RxSwift可以管理的东西吗?或者我必须以旧的方式这样做?

1 个答案:

答案 0 :(得分:1)

经过几个小时的研究,我看到this issue on their GitHub page并通过它完成了工作。

原来我的代码是:

txtDate
    .rx
    .controlEvent(UIControlEvents.touchUpInside)
    .map{ true }
    .bind(to: txtDateHasFocused).disposed(by: disposeBag)

根本没有产生任何反应。不幸的是我不知道为什么。检查UITextField是否已被关注(或正在编辑)的正确方法是:

txtDate
    .rx
    .controlEvent(UIControlEvents.editingDidBegin) // Here is the key
    .map{ true }
    .bind(to: txtDateHasFocused).disposed(by: disposeBag)

事实证明我使用的UIControlEvent是错误的,我不知道为什么。也许与iOS上的响应者有关。关于“为什么.touchUpInside在这种情况下不会触发事件”的解释会很棒。