带有 RxSwift 的搜索栏取消按钮

Posted

技术标签:

【中文标题】带有 RxSwift 的搜索栏取消按钮【英文标题】:Search Bar Cancel Button with RxSwift 【发布时间】:2020-06-24 09:54:40 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

假设searchBarUISearchController 上的实际搜索栏...

您必须致电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)

【讨论】:

以上是关于带有 RxSwift 的搜索栏取消按钮的主要内容,如果未能解决你的问题,请参考以下文章

RxSwift安装

即使在键盘关闭时也保持搜索栏取消按钮的颜色

取消搜索栏时,所选行正在更改

SearchBar 在单击取消按钮之前不显示结果

UIsearchBar 取消按钮导致导航栏未隐藏

在 UISearchBar 中设置取消按钮的样式