當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