2017-08-14 4 views
0

Im nouveau dans RxSwift, je veux utiliser UITapGestureRecognizer pour rejeter cLavier:sélecteur non reconnu pour UITapGestureRecognizer dans RxSwift

let tapGest = UITapGestureRecognizer() 
    tapGest.rx.event.subscribe(onNext: {[weak self] _ in 
     self?.view.endEditing(true) 
    }).disposed(by: disposeBag) 
    view.addGestureRecognizer(tapGest) 

mais quand j'utilise le geste, l'application se termine avec cette erreur:

*** Terminating application en raison d'exception uncaught 'NSInvalidArgumentException', raison: '- [TtGC7RxCocoa13GestureTargetCSo22UITapGestureRecognizer eventHandler:]: sélecteur non reconnu envoyé à l'instance 0x600000446bd0'

+0

Vérifiez ma réponse, et laissez-moi INFORM est un problème – Jaydeep

Répondre

0

Il existe des méthodes d'aide qui mettent des gestes de clic sur les vues dans RxCocoa. À partir de là, vous souhaitez probablement filtrer l'état de l'outil de reconnaissance des gestes afin de ne pas détecter tous les événements qui n'ont pas d'importance. Quelque chose comme:

view.rx.tapGesture() 
    .filter { $0.state == .ended } 
    .subscribe(onNext: { _ in 
     // Do something 
    }) 
    .disposed(by: disposeBag) 
1

Swift 3.0

Je vois votre problème et essayer de mettre en œuvre dans mon projet. Basé sur cela, j'ai trouver une solution pour le faire. J'espère que cela vous aidera aussi.

let tapGest = UITapGestureRecognizer() 
view.addGestureRecognizer(tapGest) 

    tapGest.rx.event.bind { (recognizer) in 
     self.view.endEditing(true) 
    }.disposed(by: disposeBag) 
+0

Merci, mais non travaillé :(, j'utilise Xcode 9.0 bêta 4 et RxSwift 4.0.0-alpha.0 –