如何使用UIsearchBar Delegate方法关闭键盘?我试过各种方法,但没有用。

时间:2013-03-13 13:18:56

标签: iphone ios

您好我在我的应用程序中使用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];
}

2 个答案:

答案 0 :(得分:28)

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

如果要通过IB添加UISearchBar,则应该选择UISearchBar的委托属性到文件的所有者。您应该确保正确连接IBOutlet代码中的UISearchBar

如果您要通过代码添加UISearchBar,那么您应该自己在代码中设置代理,例如searchBar.delegate=self;

下一步是确保调用委托方法,如果你正确连接了委托,这是显而易见的,检查内容的最好方法是在代码中放置break指针或通过NSLog进行打印。

如果要在用户点击搜索时隐藏

,最后使用此方法隐藏键盘
- (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}

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

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

答案 1 :(得分:9)

试试这个:

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

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
    [searchBar resignFirstResponder];
}           
相关问题