单击“输入”按钮或搜索按钮隐藏键盘

时间:2011-08-29 07:07:58

标签: iphone uisearchbar uibarbuttonitem uitoolbar

我在工具栏按钮内的UISearchBar内添加了UIBarButtonItem按钮。

以下表格:

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

[buttons addObject:searchBarButtonItem];

现在出现点击UISearchBar键盘的问题。我想在点击输入或搜索按钮时隐藏键盘。我怎么能这样做?

6 个答案:

答案 0 :(得分:9)

UISearchBarDelegate实施方法:

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

答案 1 :(得分:4)

您需要处理UISearchBarDelegate protocol方法。

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

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

上述委托方法的详细信息可以在the Apple official document中找到。我经常在这些委托方法中将第一个响应者辞职作为搜索的结束。

答案 2 :(得分:4)

对于Swift

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

答案 3 :(得分:2)

您可以使用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];
}

希望这可以帮助你...

答案 4 :(得分:1)

在头文件中,添加或连接到UISearchBar插座:应该如下所示:

@property (weak, nonatomic) IBOutlet UISearchBar *searchBarName;

然后,在实现者中添加以下内容:

self.searchBarName.delegate = self;

viewDidLoad函数中。

然后添加以下功能:

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

同样如上所述,确保在标题中添加/扩展了这个内容
UISearchBarDelegate

答案 5 :(得分:0)

使用[textField endEditing:YES];,它应该适合您,或者您可以创建按钮的对象并执行[self.buttonObj resignFirstResponder]