2012-01-18 90 views
7

是否有可能以編程方式重置一個UISearchbar,它是活動的並且已經包含文本?以編程方式重置UISearchbar

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { 

    if (tableView == self.searchDisplayController.searchResultsTableView) { 
     searchDisplayController.searchResultsTableView.hidden = YES; 
     searchBar.showsCancelButton = NO; 
     [searchBar resignFirstResponder]; 
    } 
} 

該解決方案正在運行,但searchBar中仍有文本。如果我添加這些代碼行:

searchBar.text = @""; 

總是有一個黑色的透明視圖。

任何解決方案?

+0

嘗試 searchBar.text =零; – 2012-08-10 04:42:01

回答

6

在這裏你去。這是用戶點擊取消時調用的委託方法。如果你想以不同的方式進行連線,只需將你的搜索欄聲明爲出口並參考它。總之:

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    searchBar.text = @""; 
    [searchBar resignFirstResponder]; 
} 
+0

不明白這應該如何工作請閱讀我更新的問題 – 2012-01-19 10:21:21

+0

我認爲在這一點上最好的問題是詢問你正在尋找什麼樣的行爲?在我的搜索欄上,我很少使用SB和SRC,我只是使用一個SB來照顧它是如何呈現的。爲了「重置它」,那麼我提供的代碼就是您所需要的。如果你正在尋求「讓它脫穎而出」,那麼我使用scrollViewWillBeginDragging委託方法來讓鍵盤變得無用,並讓用戶滾動瀏覽結果。 – 2012-01-19 10:58:23

+0

我可以給你一個我如何做事情的完整例子(例如,我幾乎總是使用TableView而不是TableViewController,並將SB放置在電視機上方的固定位置,以便始終可以訪問)。就像我說的,確切地知道你想要這個樣子以及你希望它的行爲方式能夠幫助我們更好地幫助你。 – 2012-01-19 10:58:32

0

不就得退休firstResponder

+0

我更新了我的問題。 – 2012-01-19 10:22:39

+0

辭職第一響應者會解僱鍵盤。 – RyanTCB 2016-09-13 22:36:48

0
[self.searchBar resignFirstResponder] 
+1

該解決方案使searchBar保持原樣並隱藏鍵盤。 – 2012-01-18 23:55:58

0

您也可以明確地隱藏resultsTableView,如果這就是你想要的東西:

searchDC.searchResultsTableView.hidden=YES; 

(searchDC是UISearchDisplayController的實例)

這將幫助你隱藏取消按鈕和東西:http://www.alexandre-gomes.com/?p=418

+0

我寧願一個空的searchBar,也沒有激活 - > no chancelButton – 2012-01-19 00:03:48

+0

請參閱我編輯的答案 – 2012-01-19 00:13:18

+0

請參閱我編輯的問題。 ( - : – 2012-01-19 00:18:26

4

很確定你要找的是什麼UISearchDisplayController.active

從SDK:

@property(nonatomic, getter=isActive) BOOL active 

如果直接設置這個值,則無需進行動畫任何變化。使用setActive:animated:如果狀態改變應該是動畫的。

當用戶專注於託管搜索欄的搜索字段時,搜索顯示控制器會自動顯示搜索界面。您可以使用此屬性強制搜索界面顯示。

+0

這裏的第一個答案很不錯。歡迎! – brainray 2012-10-03 21:49:13

1

此線程太舊了,它有灰塵。還在這裏我們是如此迅速

<#your UISearchController variable#>.isActive = false