使用RxSwift的搜索栏取消按钮

时间:2020-06-24 09:54:40

标签: swift iphone xcode rx-swift rx-cocoa

点击搜索栏的“取消”按钮时,我想辞职键盘,但是当前问题是我处理“取消”按钮的功能不起作用。您可以在此处查看我的代码:

searchBar.rx.cancelButtonClicked
                .asDriver(onErrorJustReturn: ())
                .drive(onNext: { [searchBar] in
                    searchBar?.searchTextField.resignFirstResponder()
                    
                    
                }).disposed(by: disposeBag)

1 个答案:

答案 0 :(得分:0)

假设searchBarUISearchController上的实际searchBar ...

您必须调用searchBar.resignFirstResponder(),对于iOS 13及更高版本,我发现如果不调用searchBar.showsCancelButton = false,取消按钮也不会消失。

此外,我建议传递一个弱的searchBar实例,否则您的代码可能会泄漏。因此,这就是我的写法:

searchBar.rx
   .cancelButtonClicked
   .asDriver(onErrorJustReturn: ())
   .drive(onNext: { [weak searchBar] in
      searchBar?.resignFirstResponder()
      searchBar?.showsCancelButton = false    
   })
   .disposed(by: disposeBag)