当UITextField/UISearchBar上的“清除”按钮被按下时,是否可以访问委托方法,以允许执行其他操作?当UITextField/UISearchBar的清除按钮被按下时,iPhone执行操作
感谢
当UITextField/UISearchBar上的“清除”按钮被按下时,是否可以访问委托方法,以允许执行其他操作?当UITextField/UISearchBar的清除按钮被按下时,iPhone执行操作
感谢
参见:UITextFieldDelegate Protocol Reference
如果您将视图控制器作为委托为您的文本字段(可在Interface Builder来完成),您可以使用:
- (void)clearSearchTextField
{
...
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
if (textField == self.searchTextField) [self clearSearchTextField];
return YES;
}
伟大的,这适用于UITextField,那么UISearchBar如何? – Dave 2010-03-09 00:22:41
当您清除文本字段将会发生几个事件,您将通过UISearchDisplayDelegate或UISearchBarDelegate访问这些事件,例如searchBar:textDidChange
和searchDisplayController:shouldReloadTableForSearchString
这也将导致搜索表隐藏,因此会引发
searchDisplayController:willHideSearchResultsTableView
searchDisplayController:didHideSearchResultsTableView
当检索表将隐藏您可以检查是否在搜索文本是空的,然后做你需要做的。
看到我的答案在这里:https://stackoverflow.com/a/3852509/91458 - 这是一个searchBar,但也应该适用于textField。
这似乎不再适用 – 2016-03-08 18:54:21
对于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
}
}
即使我用退格清除文本,也会调用它。但如何检测明文的总数? – avdyushin 2016-04-27 10:46:59
对于斯威夫特3:
要当按下一个的UITextField
func textFieldShouldClear(_ textField: UITextField) -> Bool {
if textField == yourTextFieldName {
// do some action
}
return true
}
“清除” 按钮执行操作看看这里的答案http://stackoverflow.com/questions/1092246/uisearchbar-clearbutton-forces-the-keyboard-to-appear – Hiren 2012-05-16 11:37:10