这是我的代码:
extension MyViewController: UISearchBarDelegate {
// MARK: - UISearchBar Delegate
func searchBar(_ searchBar: UISearchBar, selectedScopeButtonIndexDidChange selectedScope: Int) {
filterContentForSearchText(searchBar.text!, scope: searchBar.scopeButtonTitles![selectedScope])
}
// MARK: - Cancel
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
myFunc()
print("Cancel")
searchBar.resignFirstResponder()
}
}
单击取消后,所有操作均按预期完成,并且Xcode日志显示打印“取消”,但未执行功能“ myFunc”。
有什么解决的办法吗? 谢谢!
编辑:(有关更多信息)
当我单击搜索栏时,我有一个隐藏的按钮:
func filterContentForSearchText(_ searchText: String, scope: String = "xyz") {
self.exampleButton.alpha = 0.0
....
...
函数“ myFunc”如下:
func myFunc(){
self.exampleButton.alpha = 1.0
}
我也试图纠正我想要的东西:
// MARK: - Cancel
func searchBarCancelButtonClicked(_ searchBar: UISearchBar) {
self.exampleButton.alpha = 1.0
print("Cancel")
searchBar.resignFirstResponder()
}
但也不起作用。
我的目的是在取消搜索后使exampleButton出现。
答案 0 :(得分:0)
好的,我发现了问题所在。
而不是将按钮隐藏在:
func filterContentForSearchText(_ searchText: String, scope: String = "xyz")
要使其在单击搜索栏时被隐藏,我应该在以下位置使用它:
func searchBarTextDidBeginEditing(_ searchBar: UISearchBar)
现在,当我让它重新出现在搜索驳回中时,位于:
func searchBarCancelButtonClicked(_ searchBar: UISearchBar)
它运作完美!