UIViewController 实现一个视图放置一个 UITableView UISearchBar 并被实现。但是你不能调用searchBarCancelButtonClicked。不知道是什么原因。
10 回答
searchBarCancelButtonClicked 没有触发的原因可能是因为您的 UISearchBar 没有显示取消按钮。您可以像这样显示取消按钮:
searchBar.showsCancelButton = true
我遇到了同样的问题,并且使取消按钮显示使 searchBarCancelButtonClicked 按预期触发。
确保您的 UIViewController 设置为 UISearchBar 的委托,并且它采用 UISearchBarDelegate 协议。
- (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];
}
}
希望能帮助到你。
在我的情况下是一个不受控制的 userInteractionEnabled=NO
对我来说真正的原因是我认为小 x 按钮是取消按钮的意思,但事实并非如此......如果你遇到同样的问题,我使用下面的代码
func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) {
if searchText.isEmpty {
searchRecords.removeAll()
searchTableView.reloadData()
}
}
斯威夫特 4.2
我遇到了同样的问题,必须在 searchBarCancelButtonClicked 方法起作用之前将 definedPresentationContext 属性设置为 true。
definesPresentationContext = true
此行删除 UISearchController 透明视图
let searchController = UISearchController(searchResultsController: nil)
searchController.dimsBackgroundDuringPresentation = false
searchController.searchBar.delegate = self
, 不只是searchController.delegate = self
试着把它放在 viewDidLoad 中。在我的情况下,有时取消按钮操作委托“searchBarCancelButtonClicked”已触发,有时没有(只是键盘被关闭并且取消按钮变得不活动),添加后一切都开始按预期工作。
UIBarButtonItem.appearance(whenContainedInInstancesOf: [UISearchBar.self]).isEnabled = true
当我在 UIScrollView 中有一个 UISearchBar 时,我遇到了同样的问题。据我了解,您在 UITableView 中遇到了这个问题,它是 UIScrollView 的子类。
对我来说有帮助的是设置
tableView.delaysContentTouches = NO;
似乎该searchBarCancelButtonClicked
方法不适用于设置为YES
,这是默认设置。