2017-12-16 7 views
1

私はUITextFieldを持っており、フォーカスするたびにアクションを実行したいと考えています。 RxSwiftが管理できるものなのでしょうか、それとも古い方法でそうする必要がありますか?RxSwift - テキストフィールドにフォーカスが当てられているかどうかを確認する

+0

'textField.rx.controlEvent(UIControlEvents)'についてはどうですか? –

+0

私はそれについて何かを見ましたが、それを使う方法を知らない。 – juniorgarcia

答えて

1

調査した後、私はを見て、それを通して動作させました。

は私のコードをして判明:

まったく反応性を生成しませんでした
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がこの場合にイベントをトリガーしないのか」についての説明は素晴らしいでしょう。

関連する問題