14

嗨,我在我的应用程序中使用 UIsearchBar,我尝试了 UISearchBar Delegate 中的所有方法来关闭键盘但没有用。谁能帮帮我。

我试过的一些代码

1.

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

2.

-(BOOL) searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

    if([text isEqualToString:@"\n"])
    {
        [searchBar resignFirstResponder];
        return NO;
    }
    return YES;

}

3.

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

2 回答 2

30

首先,您应该UISearchBarDelegate 在课堂上实施并检查您是否已连接到您的UISearchBar

如果您UISearchBar通过 IB 添加,那么您应该选择 UISearchBar 的委托属性给文件的所有者。您应该确保正确连接 代码IBOutletUISearchBar的 。

如果您UISearchBar通过代码添加,那么您应该像这样在代码中自己设置委托searchBar.delegate=self;

下一步是确保正在调用委托方法,如果您已正确连接委托,这很明显,最好的检查方法是将中断指针放入您的代码中或通过NSLog.

最后,如果要在用户单击搜索时隐藏键盘,请使用此方法隐藏键盘

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

或者您可以在编辑完成后尝试

- (void)searchBarTextDidEndEditing:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}
于 2013-03-13T13:41:04.853 回答
10

尝试这个:

在搜索栏设置代理并检查 IBOutlet 是否连接

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}           
于 2013-03-13T13:38:55.337 回答