仅使用 UISearchBar 时如何触发 "cancel search"?
How to trigger the "cancel search" when using only a UISearchBar?
我有一个 table 视图,其中 header 显示 UISegmentedControl
和 UISearchBar
。请记住,我没有使用 UISearchController
。当我搜索完当前列表并切换到不同的段时,我想取消搜索并使用新数据重新加载列表。
目前我正在手动清除搜索文本、动画化取消按钮并隐藏键盘。但我也在我的 searchBarCancelButtonClicked
方法中这样做。
仅使用 UISearchBar 时,有没有办法以编程方式取消搜索(清除文本、隐藏键盘和隐藏取消按钮)?
不,没有办法自动清除文本字段、隐藏键盘等。尽管这看起来是常见的功能,但由每个开发人员决定如何实现它。 Apple 只是提供了在用户点击取消按钮时捕获事件的功能。
通常,我会在视图控制器中创建一个本地函数,例如:
-(void)clearSearchBar:(UISearchBar *)searchBar {
searchBar.Text = @"";
[searchBar resignFirstResponder];
...
}
然后,在 searchBarCancelButtonClicked:
中(假设您已经为搜索栏创建了一个 IBOutlet),您可以这样做:
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
[self clearSearchBar:self.searchBar];
}
然后您还可以在任何需要清除它的地方调用 clearSearchBar:
。
显然,这里可以使用类别来避免重复代码。
您也可以这样调用 searchBarCancelButtonClicked:
:
[self.searchBar.delegate searchBarCancelButtonClicked:self.searchBar];
我有一个 table 视图,其中 header 显示 UISegmentedControl
和 UISearchBar
。请记住,我没有使用 UISearchController
。当我搜索完当前列表并切换到不同的段时,我想取消搜索并使用新数据重新加载列表。
目前我正在手动清除搜索文本、动画化取消按钮并隐藏键盘。但我也在我的 searchBarCancelButtonClicked
方法中这样做。
仅使用 UISearchBar 时,有没有办法以编程方式取消搜索(清除文本、隐藏键盘和隐藏取消按钮)?
不,没有办法自动清除文本字段、隐藏键盘等。尽管这看起来是常见的功能,但由每个开发人员决定如何实现它。 Apple 只是提供了在用户点击取消按钮时捕获事件的功能。
通常,我会在视图控制器中创建一个本地函数,例如:
-(void)clearSearchBar:(UISearchBar *)searchBar {
searchBar.Text = @"";
[searchBar resignFirstResponder];
...
}
然后,在 searchBarCancelButtonClicked:
中(假设您已经为搜索栏创建了一个 IBOutlet),您可以这样做:
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar {
[self clearSearchBar:self.searchBar];
}
然后您还可以在任何需要清除它的地方调用 clearSearchBar:
。
显然,这里可以使用类别来避免重复代码。
您也可以这样调用 searchBarCancelButtonClicked:
:
[self.searchBar.delegate searchBarCancelButtonClicked:self.searchBar];