一种隐藏键盘的实用方法

Vah*_*yan 3 iphone keyboard objective-c ios

在我的项目中,我有几个页面,包含许多UITextField-s.所以我认为最好创建一个名为hideKeyboard的实用程序方法,它在任何情况下都可以工作.这是我的解决方案,但实际上这段代码中的某些东西感觉不对.有没有更好的解决方案呢?

+(void) hideKeyBoard {
    UITextField* t = [[UITextField alloc] initWithFrame:CGRectNull];
    [[UIApplication sharedApplication].keyWindow addSubview:t];
    [t becomeFirstResponder];
    [t resignFirstResponder];
    [t removeFromSuperview];
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*l.s 17

一个非常简单的解决方案是使用此处所述的响应链

[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder) 
                                           to:nil 
                                         from:nil
                                     forEvent:nil];
Run Code Online (Sandbox Code Playgroud)

通过向其发送动作,将nil其发送到响应者链中,当然,第一个有机会响应的对象是firstResponder

旁注 我看过这篇文章的唯一原因是因为每周时事通讯iOSDevWeekly,这绝对值得订阅

编辑

我想蛮力的做法就是这样

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
Run Code Online (Sandbox Code Playgroud)