2013-07-30 53 views
1

我有一個視圖控制器,其視圖的設置方式有3個按鈕和其他子視圖。在點擊其中一個按鈕(第三個按鈕)時,我將另一個視圖控制器的視圖作爲子視圖添加到self.view(在這個視圖中,我有一個搜索顯示控制器處於活動狀態,帶有鍵盤)UISearchbar Keyboard not dismissing

我能夠實現這個使用下面的代碼

[self.searchDisplayController setActive:YES]; 
    [self.searchDisplayController.searchBar setShowsCancelButton:NO]; 
    [self.searchDisplayController.searchBar becomeFirstResponder]; 

現在,當我按下2號鍵,我嘗試從上海華盈刪除這一觀點,也試圖辭職以下方式在viewWillDisappear[self.view endEditing:YES])的鍵盤,但鍵盤仍然犯規辭職

一個小編輯,它是在辭職的情況下我註釋掉下面的代碼段

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar { 

    if (self.dataSource.count) 
     return YES; 
    return NO; 
} 
+1

添加子視圖或刪除子視圖不會調用您的'viewWillAppear'或'viewWillDisappeare'方法。只有在您推送或呈現控制器時纔會調用這些方法。 – iNeal

回答

0

嘗試辭職的UISearchBar在viewWillDisappear

[yourSearchBar resignFirstResponder]; 
0

裏面那個叫你的第二個按鈕的方法,只需要輸入

[self.searchDisplayController.searchBar resignFirstResponder]; 

離開viewWill將獨自消失。這是爲什麼當視圖完成了它正在做的任何動畫,以及視圖何時離開。如果您將顯示控制器設置爲辭退響應者,則應立即使其消失。

希望這會有所幫助!

0

你可以使用NSNotificationCenter來做到這一點,如下所示。

//.m文件:

[[NSNotificationCenter defaultCenter]的addObserver:自 選擇器:@selector(ResignFirstResponder :)名:@ 「辭職」 對象:無];

在ResignFirstResponder:

[搜索欄resignFirstResponder];

在上面使用addObserver的類中,必須實現該方法。

//你想發送動作的文件,調用方法如下。 [關於你的第二個按鈕點擊]

[NSNotificationCenter defaultCenter] postNotificationName:@ 「辭職」 對象:無]。