当在 UITextField / UISearchBar 上按下“清除”按钮时,是否可以访问允许执行其他操作的委托方法?
谢谢
如果您将视图控制器设置为文本字段的委托(可以在界面生成器中完成),您可以使用:
- (void)clearSearchTextField
{
...
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
if (textField == self.searchTextField) [self clearSearchTextField];
return YES;
}
对于斯威夫特 3:
在 UITextField 上按下“清除”按钮时执行操作
func textFieldShouldClear(_ textField: UITextField) -> Bool {
if textField == yourTextFieldName {
// do some action
}
return true
}
对于UISearchBar
您将要实施func searchBar(searchBar: UISearchBar, textDidChange searchText: String)
的 .
func searchBarTextDidBeginEditing(searchBar: UISearchBar)
这也是在之前和之前触发func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
的。
你的实现应该是这样的:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if searchText == "" {
//Code to execute when search is cleared
}
}
当您清除文本字段时,将发生几个事件,您可以通过UISearchDisplayDelegate或 UISearchBarDelegate 访问这些事件,例如searchBar:textDidChange
和searchDisplayController:shouldReloadTableForSearchString
这也会导致搜索表隐藏,因此它会触发
searchDisplayController:willHideSearchResultsTableView
searchDisplayController:didHideSearchResultsTableView
当搜索表将隐藏时,您可以检查搜索文本是否为空,然后执行您需要执行的任何操作。