如何在UISearchbar中取消键盘?

3

我在我的应用程序中使用了UISearchBar,它既可以作为编辑字段,又可以作为搜索。因此,当我想要隐藏键盘时,我必须使用UISearchBar中的取消按钮,但我不能将该取消按钮显示在屏幕上,那么我该如何在不使用取消按钮的情况下使键盘消失呢?请帮帮我,因为我是iPhone应用程序开发的新手。

提前致谢!

3个回答

9
请使用以下内容:

[UISearchBar resignFirstResponder];

只需将UISearchBar这个词替换为您创建的对象的名称即可。

5
我原以为我有这个问题,但实际上我需要覆盖掉 disablesAutomaticKeyboardDismissal,因为我正在使用 UIModalPresentationPageSheet 视图。我在这里提一下,以防其他人像我一样难以追踪到这个问题。 - Bryan
1
抱歉,应该说的是UIModalPresentationFormSheet。 - Bryan
非常好的评论 @Bryan -- 那正是我的问题。 - Ralphleon

1

你只需要从UISearchbar获取UITextfield控件,然后将UITextfield的委托设置为任何执行-(void) textFieldShouldReturn:(UITextField *)textField方法的委托即可。

-(void)viewDidLoad{    
    UIView * subView;
    NSArray * subViews = [searchbar subviews];
    for(subView in subViews)
    {
        if( [subView isKindOfClass:[UITextField class]] )
        {
           ((UITextField*)subView).delegate=self;
            ((UITextField*)subView).returnKeyType=UIReturnKeyDone;
            break;
        }
    }
}

-(BOOL) textFieldShouldReturn:(UITextField *)textField{
    [textField resignFirstResponder];
    return TRUE;
}

1
你是否正在寻找一些方法来关闭键盘或者如何在编程中实现这个功能?如果是编程实现,那么可以使用 [UISearchBar resignFirstResponder]。如果你想让用户有可能关闭键盘,你可以让键盘上的返回按钮在被按下时取消其第一响应者状态,或者将一个 UIGestureRecognizer 附加到你的视图上,并设置当用户点击键盘外部时,键盘会消失。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接