2017-12-16 5 views
1

Ich habe eine UITextField und möchte jedes Mal eine Aktion ausführen, wenn sie fokussiert ist. Ist das etwas, das RxSwift verwalten kann, oder müsste ich das auf die alte Art tun?RxSwift - Überprüfen, ob das Textfeld fokussiert ist

+0

Was ist mit 'textField.rx.controlEvent (UIControlEvents)'? –

+0

Ich habe etwas darüber gesehen, weiß aber nicht, wie ich es benutzen soll. – juniorgarcia

Antwort

1

Nach ein paar Stunden Forschung, sah ich this issue on their GitHub page und machte es durch.

Stellt sich mein Code aus war:

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

, die keine Reaktivität überhaupt erzielt wurden. Leider weiß ich nicht warum. Die richtige Art und Weise zu überprüfen, ob ein UITextField fokussiert ist (oder bearbeitet wird) ist:

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

Es stellte sich heraus, dass die UIControlEvent war ich mit falsch war, wieder, ich weiß nicht, warum. Vielleicht bezieht sich das auf die Responder auf iOS. Eine Erklärung, warum .touchUpInside in diesem Fall keine Ereignisse auslöst, wäre großartig.

Verwandte Themen