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

问题描述 投票:1回答:1

我有一个UITextField,并希望每当它集中时执行一个动作。这是RxSwift可以管理的东西,还是我必须以旧的方式这样做?

ios swift reactive-programming rx-swift reactivex
1个回答
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在这种情况下不会触发事件”的解释会很棒。

© www.soinside.com 2019 - 2024. All rights reserved.