2011-08-29 82 views
2

我在UIBarButtonItem裏面添加了UISearchBar按鈕。隱藏鍵盤上的單擊輸入按鈕或搜索按鈕

以下表格:

// search bar 
UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 260, 44)]; 
UIBarButtonItem *searchBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:searchBar]; 
[searchBar release]; 

[buttons addObject:searchBarButtonItem]; 

現在出現在當我點擊UISearchBar鍵盤上的問題。我想在點擊輸入或搜索按鈕時隱藏鍵盤。我怎樣才能做到這一點?

回答

9

UISearchBarDelegate實現方法:

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar { 
    [searchBar resignFirstResponder]; 
} 
+1

thanks..for溶液 –

3

您需要處理UISearchBarDelegate protocol方法。

在以下方法中,調用UISearchBar的方法-resignFirstResponder

  • (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar
  • (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
  • (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar

的上述委託方法的細節可以在the apple official document找到。我經常在這些代表方法中將第一響應者辭職爲搜索結束。

3

可以使用的UISearchBar的委託方法

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar 
{ 
    [searchBar resignFirstResponder]; 
} 

和輸入(未測試)

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText; // called when text changes (including clear) 
{ 
    if ([searchText isEqualToString:@"\n"]) 
       [searchBar resignFirstResponder]; 
} 

希望這有助於你...

1

在頭文件中添加或連接到UISearchBar插座:應該看起來像這樣:
@property(弱,非原子)IBOutlet UISearchBar * searchBarName;
然後在實現者中添加以下內容:
self.searchBarName.delegate = self;viewDidLoad中功能
然後添加以下功能:
- (無效),在searchBarSearchButtonClicked:(的UISearchBar *)搜索欄
{
[self.searchBarName resignFirstResponder];

}

而且上述保證,這是在頭部添加/擴展
UISearchBarDelegate

0

使用[textField endEditing:YES];,它應該爲你工作,或者你可以創建烏爾按鈕的oject做[self.buttonObj resignFirstResponder]

2

用於迅速1.2

func searchBarSearchButtonClicked(searchBar: UISearchBar) { 
     searchBar.resignFirstResponder() 
    }