swift - 带有 RxSwift 的搜索栏取消按钮
问题描述
当点击搜索栏的取消按钮时,我想退出键盘,但当前的问题是我处理取消按钮的功能不起作用。您可以在此处查看我的代码:
searchBar.rx.cancelButtonClicked
.asDriver(onErrorJustReturn: ())
.drive(onNext: { [searchBar] in
searchBar?.searchTextField.resignFirstResponder()
}).disposed(by: disposeBag)
解决方案
假设这是...searchBar
上的实际搜索栏UISearchController
你必须打电话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)
推荐阅读
- javascript - 图标按钮丢失
- python - 像 MATLAB 的 ./ 运算符一样按元素划分?
- python - Python Matplotlib以错误的顺序绘制预测图
- nestjs - SoftDelete 在 typeorm 上使用 dropSchema 是真的吗?
- fastreport - 折叠组时如何在 FastReport 向下钻取分组报表中隐藏组列标题?
- python - 如何使用 Python 和 Selenium 对 Instagram 帖子发表评论?
- java - 在运行时更改 jpa 实体后,选择给出错误的结果
- kubernetes - 服务错误地选择了侦听某个不同端口的 Pod
- python - Python 3:为列表中给定的属性设置新值
- python - 如何解决 GraphQl ImportError - 无法在 Python 中从“gql”导入名称“gql”?