在我的项目中,我有几个页面包含许多UITextField-s。所以我认为最好创建一个名为hideKeyboard的实用程序方法,它在任何情况下都可以工作。 这是我的解决方案,但实际上这段代码中的某些东西感觉不对。 有没有更好的解决方案呢?
+(void) hideKeyBoard {
UITextField* t = [[UITextField alloc] initWithFrame:CGRectNull];
[[UIApplication sharedApplication].keyWindow addSubview:t];
[t becomeFirstResponder];
[t resignFirstResponder];
[t removeFromSuperview];
}
答案 0 :(得分:17)
一个非常简单的解决方案是使用响应者链here
[[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
to:nil
from:nil
forEvent:nil];
通过将操作发送到nil
,它会被发送到响应者链中,当然第一个有机会响应的对象是firstResponder
旁注 我看到这篇文章的唯一原因是因为每周通讯iOSDevWeekly,绝对值得订阅
我猜蛮力的做法是
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];