搜索栏取消按钮与 RxSwift



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

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


}).disposed(by: disposeBag)

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

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

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

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

最新更新