我使用RxSwift并且我想使用UITapGestureRecognizer
来关闭keyBoard:
let tapGest = UITapGestureRecognizer()
tapGest.rx.event.subscribe(onNext: {[weak self] _ in
self?.view.endEditing(true)
}).disposed(by: disposeBag)
view.addGestureRecognizer(tapGest)
但是当我使用手势时,应用程序正在终止此错误:
***由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [ TtGC7RxCocoa13GestureTargetCSo22UITapGestureRecognizer eventHandler:]:无法识别的选择器发送到实例0x600000446bd0'
答案 0 :(得分:1)
Swift 3.0
我已经看到了您的问题并尝试在我的项目中实施。基于此,我找到了解决方案来做到这一点。希望这也会对你有所帮助。
let tapGest = UITapGestureRecognizer()
view.addGestureRecognizer(tapGest)
tapGest.rx.event.bind { (recognizer) in
self.view.endEditing(true)
}.disposed(by: disposeBag)
答案 1 :(得分:0)
有一些辅助方法可以将轻击手势放在RxCocoa中的视图上。从那里,你可能想要过滤手势识别器的状态,这样你就不会发现所有不重要的事件。类似的东西:
view.rx.tapGesture()
.filter { $0.state == .ended }
.subscribe(onNext: { _ in
// Do something
})
.disposed(by: disposeBag)
答案 2 :(得分:0)
有同样的问题。是RxCocoa中的一个错误。