UIViewController实现放置UITableView UISearchBar并正在实现的视图。但你不能调用searchBarCancelButtonClicked。不知道是什么原因。
答案 0 :(得分:6)
确保将UIViewController设置为UISearchBar的委托,并且它采用UISearchBarDelegate协议。
答案 1 :(得分:6)
searchBarCancelButtonClicked无法触发的原因可能是因为您的UISearchBar未显示“取消”按钮。您可以像这样显示“取消”按钮:
searchBar.showsCancelButton = true
我遇到了同样的问题,并按照预期使取消按钮显示为searchBarCancelButtonClicked。
答案 2 :(得分:5)
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
// This method has been called when u enter some text on search or Cancel the search.
// so make some condition for example:
if([searchText isEqualToString:@""] || searchText==nil) {
// Nothing to search, empty result.
searching = NO;
[mytableView reloadData];
}
}
希望它有所帮助。
答案 3 :(得分:1)
在我的情况下是一个不受控制的userInteractionEnabled = NO
答案 4 :(得分:0)
searchController.searchBar.delegate = self
,而不仅仅是searchController.delegate = self
答案 5 :(得分:0)
此行删除UISearchController透明视图
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
答案 6 :(得分:0)
对我来说,真正的原因是我认为小x按钮是取消按钮,但这不是...如果您遇到相同的问题,请使用以下代码
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.isEmpty {
searchRecords.removeAll()
searchTableView.reloadData()
}
}
答案 7 :(得分:0)
尝试将其放在viewDidLoad中。就我而言,添加所有东西后,有时取消按钮动作委托“ searchBarCancelButtonClicked”已触发,有时没有触发(只是键盘被关闭,取消按钮未激活)。
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).isEnabled = true
答案 8 :(得分:0)
Swift 4.2
我遇到了同样的问题,必须在searchBarCancelButtonClicked方法起作用之前将definePresentationContext属性设置为true。
definesPresentationContext = true
答案 9 :(得分:-3)
当我在UIScrollView中有一个UISearchBar时遇到了同样的问题。据我所知,你在UITableView中有这个问题,UITableView是UIScrollView的子类。
在我的案例中有什么帮助设置
tableView.delaysContentTouches = NO;
似乎searchBarCancelButtonClicked
方法在设置为YES
时效果不佳,这是默认设置。