当按下UITextField / UISearchBar的清除按钮时,iPhone会执行操作

时间:2010-03-08 21:35:47

标签: iphone uitextfield uisearchbar

是否可以访问委托方法,以便在UITextField / UISearchBar上按下“清除”按钮时执行其他操作?

由于

5 个答案:

答案 0 :(得分:33)

请参阅:UITextFieldDelegate Protocol Reference

如果将视图控制器设置为文本字段的委托(可以在界面构建器中完成),则可以使用:

- (void)clearSearchTextField
{
  ...
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
  if (textField == self.searchTextField) [self clearSearchTextField];
  return YES;
}

答案 1 :(得分:5)

对于Swift 3:

在"清除"时执行操作按钮在UITextField上按下

ncks -d lat,17.52,30.98 -d lon,-98.52,-78.02 img.nc -O cut.nc 

答案 2 :(得分:1)

对于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
        }
    }

答案 3 :(得分:0)

当您清除文本字段时,您将可以通过UISearchDisplayDelegate或UISearchBarDelegate(例如searchBar:textDidChangesearchDisplayController:shouldReloadTableForSearchString

访问多个事件。

这也会导致搜索表隐藏,因此会触发

searchDisplayController:willHideSearchResultsTableView  
searchDisplayController:didHideSearchResultsTableView

当搜索表隐藏时,您可以检查搜索文本是否为空,然后执行您需要执行的操作。

答案 4 :(得分:-1)

请在此处查看我的回答:https://stackoverflow.com/a/3852509/91458 - 它适用于searchBar,但也应该应用于textField。