当用户键入一些文本时,我正在观察 UISearchBar.rx.text 属性以执行一些与搜索相关的操作。但有时,我也想以编程方式触发此搜索操作。例如,在创建此示例中的视图时,不幸的是没有打印“搜索 [...]”文本。
import UIKit
import RxSwift
import RxCocoa
class ViewController: UIViewController {
@IBOutlet weak var mySearchBar: UISearchBar!
let disposeBag = DisposeBag()
override func viewDidLoad() {
super.viewDidLoad()
// Trigger search when text changes
mySearchBar.rx.text.subscribe(onNext: { (text)
print("Searching for \(text)...")
// do some search Action
}
.disposed(by: disposeBag)
// Programmatically trigger a search
mySearchBar.text = "Some text to search"
}
}
问题是更改 mySearchBar.text 不会触发新的 rx.text 事件。有什么办法吗?
例如,感谢这篇文章,我知道使用 UITextField 可以使用 UITextField.sendActions(for: .ValueChanged) 函数。UISearchBar 有类似的方法吗?